US Interface Navigator and Linux

David A. Ranch
usnavigator at trinnet.net

02/15/15

 

This documentation is intended to guide an Amateur Radio operator interested in High Frequency (HF) digital modes to get a US Interface Navigator device working with Linux.


Index:

  1. Technical Introduction
  2. Assumptions and Requirements
  3. Modifying and compiling the FTDI USB to serial kernel module
  4. Installing and loading the new FTDI USB to serial kernel module
  5. Checking the ALSA sound system
  6. Configuring FLdigi to use the Navigator
  7. Testing and using Fldigi with the Navigator
  8. Navigator's Config interface
  9. FAQ
  10. Appendix
  11. Todo
  12. Errata


1. Technical Introduction

The US Interface Navigator device is an external USB device that allows operators to connect their computer to an Amateur Radio station. Though this also can be done with and assortment of standard sound cards, serial ports, etc. the Navigator unit does this with excellent build quality, audio performance, proper audio isolation, and great flexibility. The Navigator uses a high quality, 48kHz sampling rate sound chip for improving the copy on faint stations. It also includes:
  1. Three built-in 2-port FTDI serial ports [6 ports in total]
  2. One Burr-Brown audio sound card
  3. A complete WinKey CW engine (not covered in this document
  4. Internal four port USB 2.0 hub

2. Assumptions and Requirements

It's assumed that the reader of this documentation has the knowledge to compile programs from sources, is familiar with the Linux kernel sources, etc. It's beyond the scope of this documentation to instruct the user on how to bring these systems up.

Modifying and compiling the FTDI USB to serial kernel module

Historical: US Interface's Navigator's serial ports have unique identifiers that initially made them not recognized by the Linux kernel. I personally worked with the Linux kernel people and got support added years ago. If you'd like to understand what was done to add support, read on. If not, you can skip this section and go to the Checking the ALSA sound system section.


4. Installing and loading the new FTDI USB to serial kernel module

Ok, the hard part is done! Let's move the drivers over to the proper place


5. Checking the ALSA sound system

Now that the Navigator is connected and it's serial ports found, let's check on the sound system. Run the command cat /proc/asound/cards and make sure it's output includes the Burr-Brown device:

The example above shows three devices on my system: device#0: the built-in Intel AC97 sound card, device#1: an Intel winmodem device, and device#2: the Navigator's Burr Brown USB sound system. Looks good! Now let's make sure we see the required playback and capture subsystems:


6. Configuring the Yaesu FT-950

This section is incomplete but the Key thing to configure is to set Menu #51 (DATA LVL OUTPUT) to 100 on the FT950

6. Configuring Fldigi to use the Navigator

We've been messing around with Linux for long enough, lets get Fldigi running.

Before you start, I *highly* recommend that you turn up ALL the levels on both the radio, the Navigator, and Fldigi to make sure you're getting audio input. If I would have done this, I would have saved myself 20 hours of useless troubleshooting! I recommend you do a few things. Turn ALL the knobs on the US Interface Navigator to 100%. On Fldigi, on the bottom left next to the WaterFall(WF) / FFT / SIG button, set the Upper Signal level to -20db and the signal range to 85 db. Finally, set the audio output level from the radio to be over-driven. For example, on my Yaesu FT-950, hold down the "AGC" button until AGC is off. Then turn the "AF gain" knob to 100%. Again, this is only for testing and We'll set the level properly in a moment.

With the /dev/ttyUSB* device numbers written down from above, start up Fldigi and let's configure it.


7. Testing and using Fldigi with the Navigator

Ok, assuming the various US Interface Navigator cables are connected, the /dev/ttyUSB serial ports are correctly configured, etc., turn the speaker level on the radio (RF level on the FT-960) very low and turn on the radio! Assuming you followed the recommended maximum volume levels from above, you should see the classic FLDIGI interface with a saturated waterfall input:

That's good and we now know that the radio's output is making it into the Navigator and being properly digitized.

Begin to fix the levels by re-enabling the AGC feature on your radio. On the FT-960, press the AGC button once (AUTO-Slow) and then turn the "AF Gain" knob to 100%. That should begin to bring the levels back into the proper range. Please note that you might need to adjust the "Ch1 IN" knob on the Navigator unit to bring the levels down enough. Still can't drop the level's low enough? See the Navigator Config section on how to enable additional attenuators. If the levels are too low with the "CH1 IN" knob being set to 100%, you might need to raise the levels via your radio's various settings.

With a properly adjusted input, it should look something like the following:

Next test, move the frequency knob around and makes sure Fldigi updates it's frequency display in the upper left-hand corner.

The final step is to test transmitting and setting the output levels and you're probably going to need external help. To set good signal levels, you need to set some sane levels in several places.


8. Navigator's Config interface

The US Interface Navigator has several firmware settings the are configured via the "CONFIG" serial port. Please see the Navigator's manuals for the details on these various options but the short version is:

Assuming that the Navigator config interface is on /dev/ttyUSB5, you can issue the following commands to initialize the interface and say, dim the LED's brightness:

Check out my complete US Interface Navigator read/write EEPROM script


9. FAQ:


10. Appendix

  1. /var/log/messages output when connecting the Navigator with a stock kernel (your output will look somewhat different):
    kernel: usb 3-1: new full speed USB device using uhci_hcd and address 38
    kernel: usb 3-1: configuration #1 chosen from 1 choice
    kernel: hub 3-1:1.0: USB hub found
    kernel: hub 3-1:1.0: 4 ports detected
    kernel: usb 3-1.1: new full speed USB device using uhci_hcd and address 39
    kernel: usb 3-1.1: configuration #1 chosen from 1 choice
    kernel: input: Burr-Brown from TI USB Audio CODEC  as /class/input/input7
    kernel: input: USB HID v1.00 Device [Burr-Brown from TI USB Audio CODEC ] on usb-0000:1
    kernel: usb 3-1.2: new full speed USB device using uhci_hcd and address 40
    kernel: usb 3-1.2: configuration #1 chosen from 1 choice
    kernel: usb 3-1.3: new full speed USB device using uhci_hcd and address 41
    kernel: usb 3-1.3: configuration #1 chosen from 1 choice
    kernel: usb 3-1.4: new full speed USB device using uhci_hcd and address 42
    kernel: usb 3-1.4: configuration #1 chosen from 1 choice
    kernel: usbcore: registered new driver snd-usb-audio
         
  2. /sbin/lsusb output when the Navigator is connected with a stock kernel (your output will look somewhat different):
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 099: ID 0403:b812 Future Technology Devices International, Ltd
    Bus 001 Device 095: ID 03eb:3301 Atmel Corp. at43301 4-Port Hub
    Bus 001 Device 097: ID 0403:b810 Future Technology Devices International, Ltd
    Bus 001 Device 096: ID 08bb:2906 Texas Instruments Japan
    Bus 001 Device 098: ID 0403:b811 Future Technology Devices International, Ltd
        
  3. cat /proc/bus/usb/devices output when the Navigator is connected (your output will look somewhat different)
    T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
    B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
    D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0000 ProdID=0000 Rev= 2.06
    S:  Manufacturer=Linux 2.6.18-128.1.10.el5 uhci_hcd
    S:  Product=UHCI Host Controller
    S:  SerialNumber=0000:00:1d.2
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
    
    T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
    B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
    D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0000 ProdID=0000 Rev= 2.06
    S:  Manufacturer=Linux 2.6.18-128.1.10.el5 uhci_hcd
    S:  Product=UHCI Host Controller
    S:  SerialNumber=0000:00:1d.1
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
    
    T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
    B:  Alloc=217/900 us (24%), #Int=  2, #Iso=  0
    D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0000 ProdID=0000 Rev= 2.06
    S:  Manufacturer=Linux 2.6.18-128.1.10.el5 uhci_hcd
    S:  Product=UHCI Host Controller
    S:  SerialNumber=0000:00:1d.0
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
    
    T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6
    B:  Alloc=  0/800 us ( 0%), #Int=  3, #Iso=  0
    D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0000 ProdID=0000 Rev= 2.06
    S:  Manufacturer=Linux 2.6.18-128.1.10.el5 ehci_hcd
    S:  Product=EHCI Host Controller
    S:  SerialNumber=0000:00:1d.7
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms
    
    T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 87 Spd=480 MxCh= 4
    D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=05e3 ProdID=0605 Rev= 6.0b
    S:  Product=USB2.0 Hub
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms
    
    T:  Bus=01 Lev=02 Prnt=87 Port=02 Cnt=02 Dev#= 95 Spd=12  MxCh= 4
    D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=03eb ProdID=3301 Rev= 3.00
    S:  Product=Standard USB Hub
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 64mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
    E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=255ms
    
    T:  Bus=01 Lev=03 Prnt=95 Port=00 Cnt=01 Dev#= 96 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=08bb ProdID=2906 Rev= 1.00
    S:  Manufacturer=Burr-Brown from TI
    S:  Product=USB Audio CODEC
    C:* #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    I:  If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS= 192 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS=  96 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS=  96 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS=  48 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS=  96 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=02(O) Atr=09(Isoc) MxPS=  48 Ivl=1ms
    I:  If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS= 196 Ivl=1ms
    I:  If#= 2 Alt= 2 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  98 Ivl=1ms
    I:  If#= 2 Alt= 3 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS= 180 Ivl=1ms
    I:  If#= 2 Alt= 4 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  90 Ivl=1ms
    I:  If#= 2 Alt= 5 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS= 132 Ivl=1ms
    I:  If#= 2 Alt= 6 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  66 Ivl=1ms
    I:  If#= 2 Alt= 7 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  92 Ivl=1ms
    I:  If#= 2 Alt= 8 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  46 Ivl=1ms
    I:  If#= 2 Alt= 9 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  68 Ivl=1ms
    I:  If#= 2 Alt=10 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  34 Ivl=1ms
    I:  If#= 2 Alt=11 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  34 Ivl=1ms
    I:  If#= 2 Alt=12 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 2 Alt=13 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=  18 Ivl=1ms
    I:  If#= 2 Alt=14 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 2 Alt=15 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  48 Ivl=1ms
    I:  If#= 2 Alt=16 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  24 Ivl=1ms
    I:  If#= 2 Alt=17 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  24 Ivl=1ms
    I:  If#= 2 Alt=18 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  12 Ivl=1ms
    I:  If#= 3 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
    E:  Ad=85(I) Atr=03(Int.) MxPS=   1 Ivl=10ms
    
    T:  Bus=01 Lev=03 Prnt=95 Port=01 Cnt=02 Dev#= 97 Spd=12  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=0403 ProdID=b810 Rev= 5.00
    S:  Manufacturer=FTDI
    S:  Product=Navigator (CAT & 2nd PTT)
    S:  SerialNumber=00000000
    C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    T:  Bus=01 Lev=03 Prnt=95 Port=02 Cnt=03 Dev#= 98 Spd=12  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=0403 ProdID=b811 Rev= 5.00
    S:  Manufacturer=FTDI
    S:  Product=Navigator (WKey & FSK)
    S:  SerialNumber=00000001
    C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    T:  Bus=01 Lev=03 Prnt=95 Port=03 Cnt=04 Dev#= 99 Spd=12  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=0403 ProdID=b812 Rev= 5.00
    S:  Manufacturer=FTDI
    S:  Product=Navigator (RS232 & Config)
    S:  SerialNumber=00000002
    C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
         
  4. ls -la /dev/ttyUSB* output when the US Interface Navigator device is connected with a stock kernel (your output might look somewhat different). Notice that NO serial ports are detected:
    # ls -la /dev/ttyUSB*
    ls: /dev/ttyUSB*: No such file or directory
         
  5. /var/log/messages output when connecting the Navigator with the modified kernel (your output will look somewhat different). Notice we see all six serial ports now:
    kernel: usbcore: registered new driver usbserial
    kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
    kernel: usbcore: registered new driver usbserial_generic
    kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core
    kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
    kernel: ftdi_sio 3-1.2:1.0: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
    kernel: ftdi_sio 3-1.2:1.1: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.2: FTDI USB Serial Device converter now attached to ttyUSB1
    kernel: ftdi_sio 3-1.3:1.0: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.3: FTDI USB Serial Device converter now attached to ttyUSB2
    kernel: ftdi_sio 3-1.3:1.1: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.3: FTDI USB Serial Device converter now attached to ttyUSB3
    kernel: ftdi_sio 3-1.4:1.0: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.4: FTDI USB Serial Device converter now attached to ttyUSB4
    kernel: ftdi_sio 3-1.4:1.1: FTDI USB Serial Device converter detected
    kernel: drivers/usb/serial/ftdi_sio.c: Detected FT2232C
    kernel: usb 3-1.4: FTDI USB Serial Device converter now attached to ttyUSB5
    kernel: usbcore: registered new driver ftdi_sio
    kernel: drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
         
  6. ls -la /dev/ttyUSB* output when the US Interface Navigator device is connected with the modified stock kernel (your output might look somewhat different). Notice that all six serial ports are detected:
    crw-rw---- 1 root uucp 188, 0 Dec  5 11:25 /dev/ttyUSB0
    crw-rw---- 1 root uucp 188, 1 Dec  5 11:25 /dev/ttyUSB1
    crw-rw---- 1 root uucp 188, 2 Dec  5 11:25 /dev/ttyUSB2
    crw-rw---- 1 root uucp 188, 3 Dec  5 11:25 /dev/ttyUSB3
    crw-rw---- 1 root uucp 188, 4 Dec  5 11:25 /dev/ttyUSB4
    crw-rw---- 1 root uucp 188, 5 Dec  5 11:25 /dev/ttyUSB5
         
  7. usinterface-ident.sh identification script:

    You can find current versions of my US Interface Navigator scripts -- Here -- and some of the older ones -- Here --

    Below is an example of one of my eariler versions:

    #!/bin/bash
    
    # 11/26/09
    # written by dranch
    
    
    #Set to 1 if you want verbose messages
    VERBOSE=1
    
    #Set to 1 if you want debugging messages printed
    DEBUG=1
    
    #Set any required PATHs to be distribution independent
    LSMOD="/sbin/lsmod"
    LSUSB="/sbin/lsusb"
    
    #These are the US Interface Navigators USB IDs
    USBCATID="0403:b810"
    USBWKEYID="0403:b811"
    USBRS232ID="0403:b812"
    
    
    #-------------------------------------------------------------------------
    # Mainline code
    #-------------------------------------------------------------------------
    
    #Load the modified FTDI module if required
    if [ -z "`$LSMOD | grep ^ftdi_sio`" ]; then
       echo -e "\n ftdi_sio module not loaded.  You will be prompted for sudo \
    if you're not already root"
       sudo /sbin/modprobe ftdi_sio
    fi
    
    #Find the installed USB ID handles
    ##CAT and 2nd PTT
    USBCATMAJ=`/sbin/lsusb | grep $USBCATID | awk '{print $2}' | sed 's/0*//'`
    USBCATMIN=`/sbin/lsusb | grep $USBCATID | awk '{print $4}' | sed 's/0*//' | sed 's/://'`
    
    ##WKey & FSK
    USBWKEYMAJ=`/sbin/lsusb | grep $USBWKEYID | awk '{print $2}' | sed 's/0*//'`
    USBWKEYMIN=`/sbin/lsusb | grep $USBWKEYID | awk '{print $4}' | sed 's/0*//' | sed 's/://'`
    
    ##RS232 & Config
    USBRS232MAJ=`/sbin/lsusb | grep $USBRS232ID | awk '{print $2}' | sed 's/0*//'`
    USBRS232MIN=`/sbin/lsusb | grep $USBRS232ID | awk '{print $4}' | sed 's/0*//' | sed 's/://'`
    
    echo -e "\nUS Interface Navigator:\n"
    if [ $VERBOSE -eq 1 ]; then
       #interface IDs - CAT and 2nd PTT
       for ID in `ls /sys/class/usb_device/usbdev$USBCATMAJ.$USBCATMIN/device | grep ^[0-9]`; do
         echo "Device ID: $USBCATID: bound TTY: `ls /sys/class/usb_device/usbdev$USBCATMAJ.$USBCATMIN/device/$ID | grep ttyUSB` : \
    description: `cat /sys/class/usb_device/usbdev$USBCATMAJ.$USBCATMIN/device/$ID/interface`"
       done
    
       #interface IDs - WKey & FSK
       for ID in `ls /sys/class/usb_device/usbdev$USBWKEYMAJ.$USBWKEYMIN/device | grep ^[0-9]`; do
         echo "Device ID: $USBWKEYID: bound TTY: `ls /sys/class/usb_device/usbdev$USBWKEYMAJ.$USBWKEYMIN/device/$ID | grep ttyUSB` : \
    description: `cat /sys/class/usb_device/usbdev$USBWKEYMAJ.$USBWKEYMIN/device/$ID/interface`"
       done
    
       #interface IDs - RS232 & Config
       for ID in `ls /sys/class/usb_device/usbdev$USBRS232MAJ.$USBRS232MIN/device | grep ^[0-9]`; do
         echo "Device ID: $USBRS232ID: bound TTY: `ls /sys/class/usb_device/usbdev$USBRS232MAJ.$USBRS232MIN/device/$ID | grep ttyUSB` : \
    description: `cat /sys/class/usb_device/usbdev$USBRS232MAJ.$USBRS232MIN/device/$ID/interface`"
       done
    fi
    
    echo -e "\ndone.\n\n"
         
  8. usinterface-ident.sh output with the modified kernel. Notice that all six serial ports are detected and identified:
    US Interface Navigator:
    
    Device ID: 0403:b810: bound TTY: ttyUSB0 : description: Navigator (CAT & 2nd PTT)
    Device ID: 0403:b810: bound TTY: ttyUSB1 : description: Navigator (CAT & 2nd PTT)
    Device ID: 0403:b811: bound TTY: ttyUSB2 : description: Navigator (WKey & FSK)
    Device ID: 0403:b811: bound TTY: ttyUSB3 : description: Navigator (WKey & FSK)
    Device ID: 0403:b812: bound TTY: ttyUSB4 : description: Navigator (RS232 & Config)
    Device ID: 0403:b812: bound TTY: ttyUSB5 : description: Navigator (RS232 & Config)
    
    done.
         

11. Todo


12. Errata

02/15/15 - Added a URL to the usinterface-commands.sh command
         - Added more links to the HamPacket docs for deterministic serial ports too
06/20/10 - fixed an incorrect path in copying over the newly compiled kernel module
12/05/09 - First Draft