[chirp_users] Port names: (Was Re: Linux and chirp)

Dave B g8kbvdave at googlemail.com
Sat Nov 5 05:51:45 PDT 2022

Those of you who are using Linux in one form or another, and need some 
"stability" as to how USB/Serial adapters are named/numbered each time 
you connect them to you computer, could do no worse than consult this 


Very good and genuinely useful info regarding "udev rules".   These are 
text files that you can create, so that the OS can assign a consistent 
device ID for your use, regardless of how the OS actually discovered them...

Two things though...

a)  The place to put the needed udev configuration file, can vary 
between Linux distro's, worse, more than one place can be used.  One for 
"system" and one for "users".

(On this now older Mint 19.3 system, my "Shack" udev file 
(99-shack.rules) is located at:-  /lib/udev/rules.d)

You also need to kick the OS into re-scanning the udev rules after you 
added new rule or made a change.
$ sudo udevadm control --reload-rules && udevadm trigger       (Your 
login password will be asked for.)|

|b)  Sadly, most USB<>Serial adapters, do NOT have any unique 
identifying feature in the information they present to the OS when 
connected, or as found during the boot process. But, you can use the 
"path" to them (the convoluted route via all the USB hubs etc, between 
OS and device) if needed.   Just that you then *MUST* connect things up 
exactly the same each time.

But..  FTDI bless them, DO HAVE a unique serial number for each and 
every one of their devices.  ("Genuine" devices that is, there are fake 
FTDI chips about as well!)

It is trivial then, to use that serial number to create (for example) a 
rule that results in a "device" name for example of:-
/dev/ttyTMV71    Whenever that programming lead is connected.

The corresponding rule itself is:-

#TM-V71 (using the FTDI based lead)
SUBSYSTEM=="tty", ATTRS{serial}=="AK06ML2R", SYMLINK+="ttyTMV71"

In this case, the FTDI unique "serial number" is  AK06ML2R

You can discover that in several ways.  One of the easiest is to perform a

$ dmesg -wH

command in a seperate terminal window.   You will see instantly what 
happens when you connect or disconnect things.  The -w means wait, and 
the H means human readable output.   So, it just sits there reporting 
stuff as it happens.   Untill you use a Control+C character to quit 
dmesg, then allowing you to close the terminal session as you need.

The output of that contains (for example)...

[  +0.114801] usb 1-1.4.2: New USB device found, idVendor=0403, 
[  +0.000003] usb 1-1.4.2: New USB device strings: Mfr=1, Product=2, 
[  +0.000002] usb 1-1.4.2: Product: FT232R USB UART
[  +0.000002] usb 1-1.4.2: Manufacturer: FTDI
[  +0.000002] usb 1-1.4.2: SerialNumber: *AK06ML2R*
[  +0.002668] ftdi_sio 1-1.4.2:1.0: FTDI USB Serial Device converter 
[  +0.000047] usb 1-1.4.2: Detected FT232RL
[  +0.000534] usb 1-1.4.2: FTDI USB Serial Device converter now attached 
to ttyUSB5
[ +12.717166] usb 1-1.4.2: USB disconnect, device number 17
[  +0.000237] ftdi_sio ttyUSB5: FTDI USB Serial Device converter now 
disconnected from ttyUSB5

Note the "usb 1-1.4.2:" common parts of each line.   the "1.4.2" after 
the initial "1-" changes if the same device is plugged into a different 
port, as below...

[  +0.000002] usb 1- Manufacturer: FTDI
[  +0.000001] usb 1- SerialNumber: *AK06ML2R*
[  +0.002685] ftdi_sio 1- FTDI USB Serial Device converter 
[  +0.000047] usb 1- Detected FT232RL
[  +0.000408] usb 1- FTDI USB Serial Device converter now 
attached to ttyUSB5

It now has a path of 1.4.5   You can use that information in a udev rule 
thus, below.

SUBSYSTEM=="tty", ATTRS{devpath}=="1.3.3", SYMLINK+="ttyTS870"

(In this case, for my Kenwood TS-870s, that is connected to one "leg" of 
a 4 port Prolific based device.
The line beginning with a #  Is a comment, you can for example include 
human readable text as a reminder...)

Example readlink outputs:

$ readlink /dev/ttyTMV71


$ readlink /dev/ttyTS870

Note!  Your "custom" name "ttyTMV71" for example is valid, but what it 
points to, the "default" device name "ttyUSB5" is also still valid.   
The only difference is that "ttyTM-V71" will not change, regardless of 
the "ttyUSBn" device it actually relates to.

So, in this instance, you would ordinarily use "/dev/ttyUSB5" in Chirp 
to work with the connected Kenwood TM-V71 radio.   However, you CAN 
manually edit the port name in Chirp, to show "/dev/ttyTMV71", and it 
remembers it between sessions, so regardless of what ttyUSB device 
number is actually uses, it will work.

(Or specify "/dev/ttyTS870" in Flrig or Fldigi.  You of course can use 
readlink in a script to set an environment variable prior to launching 
some software that needs a port specified in it's command line 
invocation.   It's not difficult, and there is ton's of good 
instructional pages out there that will help you automate things for a 
stable life...)

You can also use udev rules to give consistent names to other devices, 
if you have multiple of the same type.  Some USB sound cards for example 
also have a unique ID of some sort you can use.

Hope something above helps.   It seems like a lot of trouble and faffing 
about at first, but explore it, and you'll never look back.   It is also 
one of the more compelling reasons to buy only genuine FTDI USB/Serial 
products too!  It just makes life easier!

Lastly.  If you go this route..  DO make backups of your rules files!   
You will likely need them if/when you upgrade/replace your OS.   Or just 
to remind your faded grey cell, what you did to make it work in the past.

Have Fun!


Dave G8KBV (just another Linux user, "NOT" an expert by any means.)

On 03/11/2022 19:00, chirp_users-request at intrepid.danplanet.com wrote:
> ----------------------------------------------------------------------
> Message: 1
> Date: Thu, 3 Nov 2022 02:26:57 -0500
> From: W Paul Mills<ac0hy at wpmills.com>
> Subject: Re: [chirp_users] Linux and chirp
> To:chirp_users at intrepid.danplanet.com
> Message-ID:<cf28ae50-a629-50ea-542b-4d0db3ee525c at wpmills.com>
> Content-Type: text/plain; charset=UTF-8; format=flowed
> But if you plug in both, one will be ttyUSB0 and one will be ttyUSB1, etc.
> On 10/29/22 01:05, Cinaed Simson wrote:

Created on and sent from a Unix like PC running and using free and open source software:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://intrepid.danplanet.com/pipermail/chirp_users/attachments/20221105/f9d1f422/attachment.html 

More information about the chirp_users mailing list