{"id":951,"date":"2026-04-12T14:46:52","date_gmt":"2026-04-12T12:46:52","guid":{"rendered":"https:\/\/www.i8zse.it\/en\/?p=951"},"modified":"2026-06-07T14:50:45","modified_gmt":"2026-06-07T12:50:45","slug":"linux-ports","status":"publish","type":"post","link":"https:\/\/www.i8zse.it\/en\/linux-ports\/","title":{"rendered":"Linux &#8216;ports&#8217;"},"content":{"rendered":"<h3>Serial and audio: nothing to fear<\/h3>\n<p class=\"subtitle\">You connect the TRX to the PC and the software cannot find the port. A strange name such as <code>\/dev\/ttyUSB0<\/code> appears (and disappears) without warning.<br \/>\nLet\u2019s clarify an issue that is often a source of headaches, and how to stop guessing.<\/p>\n<p>Anyone approaching the world of <strong>digital radio<\/strong> &#8211; FT8, PSK31, Winlink, CAT control &#8211; quickly runs into an unexpected obstacle: not propagation, not the antenna, but the simple fact of failing to make the computer and the radio communicate. On the system side we have USB peripherals, and Linux assigns seemingly <em>mysterious<\/em> names that change: <code>\/dev\/ttyUSB0<\/code> today, <code>\/dev\/ttyUSB1<\/code> tomorrow.<br \/>\nWithout a <em>map<\/em>, it is easy to get lost.<\/p>\n<p>The best approach is to start from the beginning: what a communication port is on Linux, how it is assigned a name, why there are \u201cphysical\u201d and \u201cvirtual\u201d ports, and finally &#8211; at the end &#8211; an accessory I wrote specifically to allow colleagues who prefer not to use the terminal to get a complete overview of the system.<\/p>\n<h3>Everything is a file &#8211; the Unix philosophy<\/h3>\n<p>On Linux (like all Unix-like systems), every hardware device is represented by a <strong>special file<\/strong> in the <code>\/dev<\/code> directory.<br \/>\nThis is not just a historical choice: it means that communicating with a serial port uses exactly the same interface (open, read, write, close) as a normal text file. A program like WSJT-X does not need to know whether it is talking to an FTDI chip or a Prolific: it simply opens <code>\/dev\/ttyUSB0<\/code> and writes bytes.<\/p>\n<div class=\"callout note\">\n<p>Files in <code>\/dev<\/code> do not occupy disk space because they are <em>interfaces<\/em> to the kernel. Writing to <code>\/dev\/ttyUSB0<\/code> means sending data to the radio connected to the first USB-serial adapter; reading from the same file means receiving data from the radio.<\/p>\n<h3>Names<\/h3>\n<\/div>\n<p>But how does Linux assign names? A port name is not permanent by default: it depends on the order in which the kernel detects devices at boot time or when a USB device is connected. The subsystem responsible for this is called <strong>udev<\/strong>, and it works as follows: when a USB-to-serial adapter is inserted, the kernel loads the appropriate driver (e.g. <code>cp210x<\/code> for Silicon Labs chips, <code>ftdi_sio<\/code> for FTDI) and creates the node in <code>\/dev<\/code>. Based on the device type it assigns a name (ttyUSB for USB serial adapters) and a number (0 for the first, 1 for the second, and so on). The zero in <code>\/dev\/ttyUSB0<\/code> indicates it is the first available at that moment. If two interfaces are connected, the one the kernel sees first becomes <code>ttyUSB0<\/code>, the other <code>ttyUSB1<\/code>. Unplugging and reconnecting can change the order.<\/p>\n<h3>External ports, internal ports<\/h3>\n<p>It is also important to distinguish between <strong>external physical ports<\/strong> (generally USB-connected) and <strong>internal physical ports<\/strong> (integrated into the motherboard or a PCI card).<\/p>\n<p><strong>External ports<\/strong> are by far the most common in modern setups. A USB cable with an FTDI chip or a dedicated radio audio\/serial interface (Signalink, RigBlaster, DigiRig\u2026) all appear here.<br \/>\nLinux identifies the manufacturer and model using two numbers: the <strong>VID<\/strong> (Vendor ID) and <strong>PID<\/strong> (Product ID), stored in the chip firmware and usually visible with the <code>lsusb<\/code> command.<\/p>\n<pre><span class=\"cm\"># Example: Silicon Labs CP2102 chip<\/span>\r\nBus 001 Device 004: ID <span class=\"hl\">10C4:EA60<\/span> Silicon Laboratories CP210x UART Bridge\r\n                       <span class=\"cm\">^^^^ ^^^^<\/span>\r\n                       <span class=\"cm\">VID  PID<\/span><\/pre>\n<h3>Internal ports<\/h3>\n<p>The <code>\/dev\/ttySN<\/code> ports correspond to physical UARTs soldered onto the motherboard (typically two, <code>ttyS0<\/code> and <code>ttyS1<\/code>, i.e. the old COM1 and COM2 of Windows). On modern PCs they are often unused or absent, but they are still common in older computers that work very well for amateur radio use. They have a fixed I\/O address (<code>0x3F8<\/code> for COM1, <code>0x2F8<\/code> for COM2) and a dedicated IRQ (IRQ 4 for ttyS0, IRQ 3 for ttyS1), making them very stable and predictable &#8211; there is no risk of name changes. Often a 9-pin connector for ttyS0 is found on the rear panel, while ttyS1 may exist on the motherboard without an external connector.<\/p>\n<h3>Virtual ports<\/h3>\n<p>A virtual port has no <em>hardware<\/em> behind it: it is an abstraction created by software. Functionally it behaves like any physical port: it can be opened, read, and written. The data, however, follows a different path. There are several types:<\/p>\n<p><strong>Pseudo-terminals (PTY)<\/strong>: ports created in pairs to manage user data streams; the pair consists of a <strong>master<\/strong> (<code>\/dev\/ptmx<\/code>) and a <strong>slave<\/strong> (<code>\/dev\/pts\/N<\/code>). Normally you never see them, but they may appear in port scans; if so, ignore them.<\/p>\n<p><strong>Virtual pairs (socat, tty0tty)<\/strong>: tools such as <code>socat<\/code> or the kernel module <code>tty0tty<\/code> can create pairs of serial ports connected to each other: everything written on one side appears on the other. They are often used to bridge two programs that both want to \u201cown\u201d a port, or for debugging without physical hardware.<\/p>\n<h3>Audio: same logic, different subsystem<\/h3>\n<p>Sound cards on Linux are managed by <strong>ALSA<\/strong> (Advanced Linux Sound Architecture), with an optional layer called <strong>PulseAudio<\/strong> or <strong>PipeWire<\/strong> running above ALSA.<br \/>\nUnlike serial ports, audio devices do not appear in <code>\/dev<\/code> with readable names: they are accessed through numeric indices or higher-level APIs such as <code>sounddevice<\/code> (Python) or <code>portaudio<\/code>.<\/p>\n<p data-start=\"119\" data-end=\"506\">For a radio operator, the most relevant parameters are the <strong>number of input and output channels<\/strong> (needed to handle separate signals), the <strong>sampling rate<\/strong>, and the <strong>latency<\/strong>.<br \/>\nChannel count matters when separating different streams (e.g. RX\/TX or multiple receivers); for a single transceiver it is less critical. Latency affects real-time monitoring and system stability.<br \/>\nRegarding sampling rate, while 44.1 kHz is the historical standard in music audio, in amateur radio 48 kHz is generally more important, as it is the de facto standard for most USB interfaces and DSP systems. Many digital mode programs such as <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">WSJT-X<\/span><\/span> and many SDR devices operate internally at 48 kHz or multiples thereof, making this rate preferable to avoid resampling and potential signal degradation.<br \/>\nAn often-overlooked aspect is clock stability and timing synchronization: poor audio clock stability can introduce frequency drift in the sampled signal, making clock quality more important than nominal sampling rate alone.<br \/>\nLow latency is important for real-time monitoring and some SDR applications, while in digital modes like WSJT-X it is usually less critical. In some cases, higher latency can even improve system stability by reducing errors and audio dropouts.<\/p>\n<p data-start=\"119\" data-end=\"506\">The standard way to inspect audio devices is using <code>aplay -l<\/code> or <code>pactl list sinks<\/code>, but the output is verbose and difficult to read at a glance.<\/p>\n<h3>Devenum<\/h3>\n<div class=\"app-showcase\">\n<div class=\"app-showcase-body\">To reduce these issues and avoid using the terminal, I developed an application that displays all relevant information (port type, driver, VID:PID, USB path, IRQ, process using the device, audio channels, latency) in a single graphical window with a tabbed layout, easy to use. The program is preinstalled in HamLinux, but can also be downloaded from my <a href=\"https:\/\/github.com\/grutig\/DevEnum\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<br \/>\nEach port is shown as a <strong>card<\/strong> with a colored strip on the left indicating its type at a glance.<\/div>\n<p><a href=\"https:\/\/www.i8zse.it\/wp-content\/uploads\/2026\/04\/audioports.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3333\" src=\"https:\/\/www.i8zse.it\/wp-content\/uploads\/2026\/04\/audioports-300x236.png\" alt=\"\" width=\"300\" height=\"236\" \/><\/a><br \/>\n<a href=\"https:\/\/www.i8zse.it\/wp-content\/uploads\/2026\/04\/usbports.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3332\" src=\"https:\/\/www.i8zse.it\/wp-content\/uploads\/2026\/04\/usbports-300x236.png\" alt=\"\" width=\"300\" height=\"236\" \/><\/a><\/p>\n<\/div>\n<p>The software displays all relevant information:<\/p>\n<p><strong>For serial ports:<\/strong><\/p>\n<ul class=\"feat-list\">\n<li>Automatic classification as <em>external physical<\/em>, <em>internal physical<\/em>, or <em>virtual<\/em><\/li>\n<li>Driver name and device description (e.g. \u201cCP2102 USB to UART Bridge\u201d)<\/li>\n<li>VID:PID for unique chip identification<\/li>\n<li>Serial number and USB bus location (for external ports)<\/li>\n<li>IRQ and I\/O address (for internal RS-232 ports, via <code>setserial<\/code>)<\/li>\n<li>Name of the process currently using the port, with PID (via <code>fuser<\/code>)<\/li>\n<li>Status badge: <em>Available<\/em> (green) or <em>In use<\/em> (orange)<\/li>\n<li>Quick filter: All \/ USB external \/ Internal \/ Virtual<\/li>\n<\/ul>\n<p><strong>For audio devices:<\/strong><\/p>\n<ul class=\"feat-list\">\n<li>Number of input and output channels with visual indicators<\/li>\n<li>Default sampling rate<\/li>\n<li>Low and high latency (input and output), in seconds<\/li>\n<li>Host API (ALSA, PulseAudio, JACK\u2026)<\/li>\n<li>Badge <em>Default I\/O<\/em>, <em>Default IN<\/em> or <em>Default OUT<\/em><\/li>\n<li>Filter: All \/ Input only \/ Output only<\/li>\n<\/ul>\n<p>It can be very useful for detecting new devices: simply keep the program open while connecting the radio interface, then press <em>Refresh<\/em> immediately after plugging in the USB cable. The new port will appear with all its details.<br \/>\nIf a device is marked as <em>In use<\/em> and no applications are running, it means another program (possibly left open by mistake) is still holding the port.<\/p>\n<h3>In summary<\/h3>\n<p>Linux is not hostile to radios: it is just transparent. Every device has a name, a driver, a story. Once you understand how <code>\/dev<\/code> naming works and the difference between physical and virtual ports, configuring WSJT-X, Fldigi, or any other software becomes a matter of minutes, without endless online searching.<br \/>\nI wrote devenum to make this infrastructure visible and readable, not to replace understanding but to speed it up.<\/p>\n<div class=\"ztit\" style=\"background-color:rgb(102, 156, 155);; border: 1px solid rgb(102, 156, 155);;\"><img decoding=\"async\" src=\"https:\/\/www.i8zse.it\/en\/wp-content\/plugins\/textbox\/irev.png\" style=\"background-color:rgb(102, 156, 155);;\">Info<\/div><div class=\"zbox\" style=\"border: 1px solid rgb(102, 156, 155);;\"><br \/>\nUSB peripherals are also identified by a <em>physical<\/em> path such as <code>1-1.2<\/code>, which is stable and identifies the exact USB port (on the computer or hub) where the device is connected. If, as is common, the radio is always plugged into the same port, it is possible to create a <code>udev<\/code> rule that generates a custom device file name, for example <code>\/dev\/radio_cat<\/code>.<\/p>\n<p>If you want to experiment, you can create a file in <code>\/etc\/udev\/rules.d\/99-radio.rules<\/code> with a line like:<\/p>\n<div class=\"callout tip\"><code>SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", SYMLINK+=\"radio_cat\"<\/code>This instructs Linux to create a device file named <code>\/dev\/radio_cat<\/code> pointing to the USB device with VID 10c4 and PID ea60, regardless of where it is connected.<br \/>\nThis is useful when you have multiple similar devices &#8211; for example, a single PC managing multiple radios. In a dedicated setup with a single external serial interface, it is not necessary, since it will always be assigned to <code>\/dev\/ttyUSB0<\/code>.<\/p>\n<p>It is also worth noting that some USB devices have a serial number, allowing unique identification of that specific unit. For example, FTDI devices have a factory unique ID; Silicon Labs chips support it but it is not always programmed (often left at default <code>0001<\/code>). WCH (CH340\/341) and Prolific devices do not support this feature, so they cannot be uniquely distinguished. This is an important detail when choosing hardware.<\/p>\n<\/div>\n<p><\/div>\n<div class=\"ztit\" style=\"background-color:rgb(102, 156, 155);; border: 1px solid rgb(102, 156, 155);;\"><img decoding=\"async\" src=\"https:\/\/www.i8zse.it\/en\/wp-content\/plugins\/textbox\/irev.png\" style=\"background-color:rgb(102, 156, 155);;\">Info<\/div><div class=\"zbox\" style=\"border: 1px solid rgb(102, 156, 155);;\"><\/p>\n<div class=\"dot dot-r\">\n<h3>The naming families<\/h3>\n<table class=\"ctable\">\n<thead>\n<tr>\n<th>Name<\/th>\n<th>Type<\/th>\n<th>Typical use case<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\/dev\/ttyUSB<em>N<\/em><\/td>\n<td>External physical &#8211; USB-to-serial converter (FTDI, CP210x, Prolific)<\/td>\n<td>CAT cable, TNC, Signalink interface<\/td>\n<\/tr>\n<tr>\n<td>\/dev\/ttyACM<em>N<\/em><\/td>\n<td>External physical &#8211; CDC\/ACM (native USB device)<\/td>\n<td>Arduino, SDR boards with CDC firmware<\/td>\n<\/tr>\n<tr>\n<td>\/dev\/ttyS<em>N<\/em><\/td>\n<td>Internal physical &#8211; motherboard or PCI\/ISA UART<\/td>\n<td>Industrial PCs, old RS-232 TNCs<\/td>\n<\/tr>\n<tr>\n<td>\/dev\/rfcomm<em>N<\/em><\/td>\n<td>External physical &#8211; Bluetooth RFCOMM<\/td>\n<td>Bluetooth PTT headset, wireless TNC<\/td>\n<\/tr>\n<tr>\n<td>\/dev\/pts\/<em>N<\/em><\/td>\n<td>Virtual &#8211; pseudo-terminal (PTY)<\/td>\n<td>SSH sessions, <code>screen<\/code>, <code>minicom<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Serial and audio: nothing to fear You connect the TRX to the PC and the software cannot find the port. A strange name such as \/dev\/ttyUSB0 appears (and disappears) without warning. Let\u2019s clarify an issue that is often a source of headaches, and how to stop guessing. Anyone approaching the world of digital radio &#8211; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":952,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[76,48],"tags":[77,79,78],"class_list":["post-951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-audio","category-linux","tag-ausio","tag-ports","tag-serial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Linux &#039;ports&#039; - I8ZSE<\/title>\n<meta name=\"description\" content=\"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.i8zse.it\/en\/linux-ports\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linux &#039;ports&#039; - I8ZSE\" \/>\n<meta property=\"og:description\" content=\"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.i8zse.it\/en\/linux-ports\/\" \/>\n<meta property=\"og:site_name\" content=\"I8ZSE\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-12T12:46:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-07T12:50:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1-1024x697.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"697\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"giorgio@i8zse.eu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"giorgio@i8zse.eu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/\"},\"author\":{\"name\":\"giorgio@i8zse.eu\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#\\\/schema\\\/person\\\/b5b002dfac76285c57ab63e5fe76bf83\"},\"headline\":\"Linux &#8216;ports&#8217;\",\"datePublished\":\"2026-04-12T12:46:52+00:00\",\"dateModified\":\"2026-06-07T12:50:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/\"},\"wordCount\":1641,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#\\\/schema\\\/person\\\/b5b002dfac76285c57ab63e5fe76bf83\"},\"image\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ports-1536x1045-1.png\",\"keywords\":[\"ausio\",\"ports\",\"serial\"],\"articleSection\":[\"audio\",\"linux\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/\",\"url\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/\",\"name\":\"Linux 'ports' - I8ZSE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ports-1536x1045-1.png\",\"datePublished\":\"2026-04-12T12:46:52+00:00\",\"dateModified\":\"2026-06-07T12:50:45+00:00\",\"description\":\"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ports-1536x1045-1.png\",\"contentUrl\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ports-1536x1045-1.png\",\"width\":1536,\"height\":1045},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/linux-ports\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linux &#8216;ports&#8217;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/\",\"name\":\"I8ZSE\",\"description\":\"Hamradio\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#\\\/schema\\\/person\\\/b5b002dfac76285c57ab63e5fe76bf83\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/#\\\/schema\\\/person\\\/b5b002dfac76285c57ab63e5fe76bf83\",\"name\":\"giorgio@i8zse.eu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/it-header.png\",\"url\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/it-header.png\",\"contentUrl\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/it-header.png\",\"width\":452,\"height\":150,\"caption\":\"giorgio@i8zse.eu\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/it-header.png\"},\"sameAs\":[\"https:\\\/\\\/www.hamlinux.it\\\/en\"],\"url\":\"https:\\\/\\\/www.i8zse.it\\\/en\\\/author\\\/giorgioi8zse-eu\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Linux 'ports' - I8ZSE","description":"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.i8zse.it\/en\/linux-ports\/","og_locale":"en_GB","og_type":"article","og_title":"Linux 'ports' - I8ZSE","og_description":"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes","og_url":"https:\/\/www.i8zse.it\/en\/linux-ports\/","og_site_name":"I8ZSE","article_published_time":"2026-04-12T12:46:52+00:00","article_modified_time":"2026-06-07T12:50:45+00:00","og_image":[{"width":1024,"height":697,"url":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1-1024x697.png","type":"image\/png"}],"author":"giorgio@i8zse.eu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"giorgio@i8zse.eu","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#article","isPartOf":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/"},"author":{"name":"giorgio@i8zse.eu","@id":"https:\/\/www.i8zse.it\/en\/#\/schema\/person\/b5b002dfac76285c57ab63e5fe76bf83"},"headline":"Linux &#8216;ports&#8217;","datePublished":"2026-04-12T12:46:52+00:00","dateModified":"2026-06-07T12:50:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/"},"wordCount":1641,"commentCount":0,"publisher":{"@id":"https:\/\/www.i8zse.it\/en\/#\/schema\/person\/b5b002dfac76285c57ab63e5fe76bf83"},"image":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#primaryimage"},"thumbnailUrl":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1.png","keywords":["ausio","ports","serial"],"articleSection":["audio","linux"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.i8zse.it\/en\/linux-ports\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/","url":"https:\/\/www.i8zse.it\/en\/linux-ports\/","name":"Linux 'ports' - I8ZSE","isPartOf":{"@id":"https:\/\/www.i8zse.it\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#primaryimage"},"image":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#primaryimage"},"thumbnailUrl":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1.png","datePublished":"2026-04-12T12:46:52+00:00","dateModified":"2026-06-07T12:50:45+00:00","description":"A practical guide on audio and serial ports for ham radio: how udes works, why port name can change and how to manage the ports fot FT8 and digital modes","breadcrumb":{"@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.i8zse.it\/en\/linux-ports\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#primaryimage","url":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1.png","contentUrl":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/06\/ports-1536x1045-1.png","width":1536,"height":1045},{"@type":"BreadcrumbList","@id":"https:\/\/www.i8zse.it\/en\/linux-ports\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.i8zse.it\/en\/"},{"@type":"ListItem","position":2,"name":"Linux &#8216;ports&#8217;"}]},{"@type":"WebSite","@id":"https:\/\/www.i8zse.it\/en\/#website","url":"https:\/\/www.i8zse.it\/en\/","name":"I8ZSE","description":"Hamradio","publisher":{"@id":"https:\/\/www.i8zse.it\/en\/#\/schema\/person\/b5b002dfac76285c57ab63e5fe76bf83"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.i8zse.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/www.i8zse.it\/en\/#\/schema\/person\/b5b002dfac76285c57ab63e5fe76bf83","name":"giorgio@i8zse.eu","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/03\/it-header.png","url":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/03\/it-header.png","contentUrl":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/03\/it-header.png","width":452,"height":150,"caption":"giorgio@i8zse.eu"},"logo":{"@id":"https:\/\/www.i8zse.it\/en\/wp-content\/uploads\/2026\/03\/it-header.png"},"sameAs":["https:\/\/www.hamlinux.it\/en"],"url":"https:\/\/www.i8zse.it\/en\/author\/giorgioi8zse-eu\/"}]}},"_links":{"self":[{"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/posts\/951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/comments?post=951"}],"version-history":[{"count":1,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/posts\/951\/revisions"}],"predecessor-version":[{"id":953,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/posts\/951\/revisions\/953"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/media\/952"}],"wp:attachment":[{"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/media?parent=951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/categories?post=951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.i8zse.it\/en\/wp-json\/wp\/v2\/tags?post=951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}