/dev/ttyUSBx not assigned after inserting Arduino Serial USB into USB hub

Hello,

I have a Ubiquiti AC Pro running Openwrt v21.02.2 and Linux 5.4.179 on mips. I am trying to hook up my Arduino UNO to one of the 4 USB ports on this hub here. However after inserting the A to B USB cable and running dmesg I notice its not assigned to any file. The arduino is also powered on from the connection.

The output of dmesg after I plug in the arduino. (look at the bottom for arduino usb message)

[    0.000000] Linux version 5.4.179 (builder@buildhost) (gcc version 8.4.0 (OpenWrt GCC 8.4.0 r16495-bf0c965af0)) #0 Wed Feb 16 20:29:10 2022
[    0.000000] printk: bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019750 (MIPS 74Kc)
[    0.000000] MIPS: machine is Ubiquiti UniFi AC Pro
[    0.000000] SoC: Qualcomm Atheros QCA956X ver 1 rev 0
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] On node 0 totalpages: 32768
[    0.000000]   Normal zone: 288 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32480
[    0.000000] Kernel command line: console=ttyS0,115200n8 rootfstype=squashfs,jffs2
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 122184K/131072K available (5257K kernel code, 194K rwdata, 688K rodata, 1212K init, 205K bss, 8888K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 51
[    0.000000] random: get_random_bytes called from 0x80661a28 with crng_init=0
[    0.000000] CPU clock: 775.000 MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4932285024 ns
[    0.000006] sched_clock: 32 bits at 387MHz, resolution 2ns, wraps every 5541893118ns
[    0.008226] Calibrating delay loop... 385.02 BogoMIPS (lpj=770048)
[    0.046712] pid_max: default: 32768 minimum: 301
[    0.051713] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.059423] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.071444] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.081751] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[    0.089023] pinctrl core: initialized pinctrl subsystem
[    0.096879] NET: Registered protocol family 16
[    0.127667] clocksource: Switched to clocksource MIPS
[    0.133920] thermal_sys: Registered thermal governor 'step_wise'
[    0.134241] NET: Registered protocol family 2
[    0.145347] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.153683] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.162564] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.170658] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.178099] TCP: Hash tables configured (established 1024 bind 1024)
[    0.184929] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.191867] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.199492] NET: Registered protocol family 1
[    0.204151] PCI: CLS 0 bytes, default 32
[    0.211853] workingset: timestamp_bits=14 max_order=15 bucket_order=1
[    0.224882] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.231075] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.254179] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.265397] pinctrl-single 1804002c.pinmux: 544 pins, size 68
[    0.272521] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    0.281398] printk: console [ttyS0] disabled
[    0.285989] 18020000.uart: ttyS0 at MMIO 0x18020000 (irq = 9, base_baud = 1562500) is a 16550A
[    0.295096] printk: console [ttyS0] enabled
[    0.304157] printk: bootconsole [early0] disabled
[    0.323414] spi-nor spi0.0: mx25l12805d (16384 Kbytes)
[    0.328828] 7 fixed-partitions partitions found on MTD device spi0.0
[    0.335405] Creating 7 MTD partitions on "spi0.0":
[    0.340382] 0x000000000000-0x000000060000 : "u-boot"
[    0.346374] 0x000000060000-0x000000070000 : "u-boot-env"
[    0.352735] 0x000000070000-0x000000800000 : "firmware"
[    0.362156] 2 uimage-fw partitions found on MTD device firmware
[    0.368323] Creating 2 MTD partitions on "firmware":
[    0.373472] 0x000000000000-0x000000200000 : "kernel"
[    0.379418] 0x000000200000-0x000000790000 : "rootfs"
[    0.385390] mtd: device 4 (rootfs) set to be root filesystem
[    0.392994] 1 squashfs-split partitions found on MTD device rootfs
[    0.399438] 0x000000580000-0x000000790000 : "rootfs_data"
[    0.405884] 0x000000800000-0x000000f90000 : "kernel1"
[    0.412047] 0x000000f90000-0x000000fb0000 : "bs"
[    0.417676] 0x000000fb0000-0x000000ff0000 : "cfg"
[    0.423439] 0x000000ff0000-0x000001000000 : "art"
[    1.083105] switch0: Atheros AR8337 rev. 2 switch registered on mdio.0
[    1.143660] random: fast init done
[    1.671161] ag71xx 19000000.eth: connected to PHY at mdio.0:00 [uid=004dd036, driver=Atheros AR8216/AR8236/AR8316]
[    1.682413] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: mii
[    1.688979] i2c /dev entries driver
[    1.694505] NET: Registered protocol family 10
[    1.703994] Segment Routing with IPv6
[    1.707939] NET: Registered protocol family 17
[    1.712618] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    1.726012] 8021q: 802.1Q VLAN Support v1.8
[    1.731162] PCI host bridge /ahb/pcie-controller@18250000 ranges:
[    1.737530]  MEM 0x0000000012000000..0x0000000013ffffff
[    1.742943]   IO 0x0000000000000000..0x0000000000000000
[    1.748503] PCI host bridge to bus 0000:00
[    1.752777] pci_bus 0000:00: root bus resource [mem 0x12000000-0x13ffffff]
[    1.759881] pci_bus 0000:00: root bus resource [io  0x0000]
[    1.765642] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    1.772657] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    1.780873] pci 0000:00:00.0: [168c:003c] type 00 class 0x028000
[    1.787133] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    1.794199] pci 0000:00:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[    1.801193] pci 0000:00:00.0: supports D1
[    1.805346] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    1.812224] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[    1.819089] pci 0000:00:00.0: BAR 0: assigned [mem 0x12000000-0x121fffff 64bit]
[    1.826662] pci 0000:00:00.0: BAR 6: assigned [mem 0x12200000-0x1220ffff pref]
[    1.835532] hctosys: unable to open rtc device (rtc0)
[    1.846904] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    1.860912] Freeing unused kernel memory: 1212K
[    1.865619] This architecture does not have kernel memory protection.
[    1.872271] Run /sbin/init as init process
[    2.422093] init: Console is alive
[    2.425884] init: - watchdog -
[    3.565511] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    3.610829] usbcore: registered new interface driver usbfs
[    3.616630] usbcore: registered new interface driver hub
[    3.622240] usbcore: registered new device driver usb
[    3.632927] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.641210] ehci-fsl: Freescale EHCI Host controller driver
[    3.648370] ehci-platform: EHCI generic platform driver
[    3.654053] ehci-platform 1b000000.usb: EHCI Host Controller
[    3.659960] ehci-platform 1b000000.usb: new USB bus registered, assigned bus number 1
[    3.668167] ehci-platform 1b000000.usb: irq 13, io mem 0x1b000000
[    3.687680] ehci-platform 1b000000.usb: USB 2.0 started, EHCI 1.00
[    3.694863] hub 1-0:1.0: USB hub found
[    3.699180] hub 1-0:1.0: 1 port detected
[    3.705925] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    3.723964] init: - preinit -
[    4.014057] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    4.328204] hub 1-1:1.0: USB hub found
[    4.538956] hub 1-1:1.0: 4 ports detected
[    4.543486] random: procd: uninitialized urandom read (4 bytes read)
[    4.983744] usb 1-1.2: new high-speed USB device number 3 using ehci-platform
[    5.101508] random: jshn: uninitialized urandom read (4 bytes read)
[    5.221623] random: jshn: uninitialized urandom read (4 bytes read)
[    5.407738] usb 1-1.4: new full-speed USB device number 4 using ehci-platform
[    6.374269] Atheros AR8216/AR8236/AR8316 mdio.0:00: Port 2 is up
[    6.388649] eth0: link up (1000Mbps/Full duplex)
[    6.401740] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.415822] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.1: link becomes ready
[   10.624524] jffs2: notice: (584) jffs2_build_xattr_subsystem: complete building xattr subsystem, 31 of xdatum (28 unchecked, 3 orphan) and 41 of xref (3 dead, 0 orphan) found.
[   10.650390] mount_root: loading kmods from internal overlay
[   10.975325] kmodloader: loading kernel modules from /tmp/overlay/upper/etc/modules-boot.d/*
[   11.384069] SCSI subsystem initialized
[   11.510724] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[   11.519464] scsi host0: usb-storage 1-1.2:1.0
[   11.524684] usbcore: registered new interface driver usb-storage
[   11.533348] kmodloader: done loading kernel modules from /tmp/overlay/upper/etc/modules-boot.d/*
[   11.874228] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
[   11.884194] block: extroot: device not present, retrying in 5 seconds
[   12.548917] scsi 0:0:0:0: Direct-Access     Generic  Flash Disk       8.07 PQ: 0 ANSI: 2
[   12.560831] sd 0:0:0:0: [sda] 3911680 512-byte logical blocks: (2.00 GB/1.87 GiB)
[   12.569322] sd 0:0:0:0: [sda] Write Protect is off
[   12.574318] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
[   12.575072] sd 0:0:0:0: [sda] No Caching mode page found
[   12.580610] sd 0:0:0:0: [sda] Assuming drive cache: write through
[   13.437222]  sda: sda1
[   13.442831] sd 0:0:0:0: [sda] Attached SCSI removable disk
[   19.516245] EXT4-fs (sda1): recovery complete
[   19.524088] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
[   19.541597] mount_root: switched to extroot
[   19.550470] urandom-seed: Seeding with /etc/urandom.seed
[   19.646642] eth0: link down
[   19.678239] procd: - early -
[   19.681374] procd: - watchdog -
[   20.320121] procd: - watchdog -
[   20.328876] procd: - ubus -
[   20.367733] crng init done
[   20.370541] random: 5 urandom warning(s) missed due to ratelimiting
[   20.435298] procd: - init -
[   21.506806] kmodloader: loading kernel modules from /etc/modules.d/*
[   21.584461] Loading modules backported from Linux version v5.10.85-0-ge4f2aee6612e
[   21.592352] Backport generated by backports.git v5.10.85-1-0-gf988973f
[   21.656926] xt_time: kernel timezone is -0000
[   21.816192] urngd: v1.0.2 started.
[   21.893848] PPP generic driver version 2.4.2
[   21.904754] NET: Registered protocol family 24
[   21.985522] ath10k 5.10 driver, optimized for CT firmware, probing pci device: 0x3c.
[   22.008514] ath10k_pci 0000:00:00.0: enabling device (0000 -> 0002)
[   22.017269] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   24.966461] ath10k_pci 0000:00:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000
[   24.976046] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0
[   24.988273] ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-ecad3248 api 2 features wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT crc32 3e4cf97f
[   25.402378] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[   26.355371] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[   26.372839] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
[   26.379325] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[   26.387632] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24984 iram: 38672'
[   26.441489] ath10k_pci 0000:00:00.0: htt-ver 2.1 wmi-op 2 htt-op 2 cal file max-sta 128 raw 0 hwcrypto 1
[   26.455750] ath10k_pci 0000:00:00.0: NOTE:  Firmware DBGLOG output disabled in debug_mask: 0x10000000
[   26.567234] ath: EEPROM regdomain: 0x2a
[   26.567240] ath: EEPROM indicates we should expect a direct regpair map
[   26.567254] ath: Country alpha2 being used: US
[   26.567257] ath: Regpair used: 0x2a
[   26.644796] ath: EEPROM regdomain: 0x2a
[   26.644803] ath: EEPROM indicates we should expect a direct regpair map
[   26.644818] ath: Country alpha2 being used: US
[   26.644821] ath: Regpair used: 0x2a
[   26.656590] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
[   26.658473] ieee80211 phy1: Atheros AR9561 Rev:0 mem=0xb8100000, irq=2
[   26.680738] kmodloader: done loading kernel modules from /etc/modules.d/*
[   35.900404] jffs2: notice: (1790) jffs2_build_xattr_subsystem: complete building xattr subsystem, 31 of xdatum (28 unchecked, 3 orphan) and 41 of xref (3 dead, 0 orphan) found.
[   40.036135] eth0: link up (1000Mbps/Full duplex)
[   40.060644] br-lan: port 1(eth0.1) entered blocking state
[   40.066276] br-lan: port 1(eth0.1) entered disabled state
[   40.072156] device eth0.1 entered promiscuous mode
[   40.077151] device eth0 entered promiscuous mode
[   40.083453] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   40.180412] br-lan: port 1(eth0.1) entered blocking state
[   40.186040] br-lan: port 1(eth0.1) entered forwarding state
[   41.060489] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[  207.197163] usb 1-1.4: USB disconnect, device number 4
[  208.564649] usb 1-1.4: new full-speed USB device number 5 using ehci-platform

I have also already installed every driver and USB essential package I could think of. I have both a genuine Arduino and a clone but the results are the same. Which is weird since I know the genuine one doesn't even require a driver.

The installed packages relating to USB I have are as follows:

root@OpenWrt:~# opkg list-installed | grep usb
kmod-phy-ath79-usb - 5.4.179-1
kmod-usb-core - 5.4.179-1
kmod-usb-ehci - 5.4.179-1
kmod-usb-net - 5.4.179-1
kmod-usb-net-cdc-ether - 5.4.179-1
kmod-usb-net-rndis - 5.4.179-1
kmod-usb-ohci - 5.4.179-1
kmod-usb-ohci-pci - 5.4.179-1
kmod-usb-serial - 5.4.179-1
kmod-usb-serial-ark3116 - 5.4.179-1
kmod-usb-serial-belkin - 5.4.179-1
kmod-usb-serial-ch341 - 5.4.179-1
kmod-usb-serial-cp210x - 5.4.179-1
kmod-usb-serial-ftdi - 5.4.179-1
kmod-usb-serial-mct - 5.4.179-1
kmod-usb-serial-mos7720 - 5.4.179-1
kmod-usb-serial-option - 5.4.179-1
kmod-usb-serial-oti6858 - 5.4.179-1
kmod-usb-serial-pl2303 - 5.4.179-1
kmod-usb-serial-qualcomm - 5.4.179-1
kmod-usb-serial-simple - 5.4.179-1
kmod-usb-serial-ti-usb - 5.4.179-1
kmod-usb-serial-wwan - 5.4.179-1
kmod-usb-storage - 5.4.179-1
kmod-usb-storage-uas - 5.4.179-1
kmod-usb-uhci - 5.4.179-1
kmod-usb2 - 5.4.179-1
kmod-usb2-pci - 5.4.179-1
kmod-usb3 - 5.4.179-1
libusb-1.0-0 - 1.0.24-4
usbids - 0.359-1
usbutils - 013-2

I also have a extroot configuration which does work connected to the hub, and I believe its listed in the dmesg output aswell.

The output of lsusb:

Bus 001 Device 003: ID 058f:6387 Generic Mass Storage
Bus 001 Device 005: ID 1a86:7523  USB Serial
Bus 001 Device 002: ID 1a40:0101  USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux 5.4.179 ehci_hcd EHCI Host Controller

I will preface that I'm not really sure what device 001(ehci controller) is, I assumed that it was part of the hub along with device 002 (USB2.0 Hub) but I'm not sure.

The output of lsusb -t:

root@OpenWrt:~# lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 480M
        |__ Port 2: Dev 3, If 0, Class=, Driver=usb-storage, 480M
        |__ Port 4: Dev 5, If 0, Class=, Driver=, 12M

This also might be a useful output. However, I think its odd that Port 4 doesn't obtain a driver even though I was using a clone in this example and have the ch341 driver installed.

That said, does anyone have ideas to why /dev/tty/USBx doesn't show up? Could I be missing a package or driver? Could the hub be consuming too much power?

Thanks for the help!

This device is handled by the ch341 driver. So it should work with the drivers you list as installed. But for some reason they aren't loaded. If they were, then we would have seen a line with

usbcore: registered new interface driver foo

for each one, including ch341. Which we don't. The only driver which is loaded (except for USB core drivers) is usb-storage. I can't explain this.

Please verify that

opkg files kmod-usb-serial-ch341

lists the two files

/etc/modules.d/usb-serial-ch341
/lib/modules/5.4.179/ch341.ko

and that they actually exist. And maybe try loading ch341 manually?

modprobe ch341

1 Like

Hey thanks for the response.

I actually fixed the issue by powering off my AC Pro, removing my extroot/USB stick, used the original internal storage partition, reformatting the USB and redoing the entire extroot process. I did have to reinstall all my stuff and pretty much started from scratch all over again but this time dmesg does show assigned device paths. Do you have any ideas to why this is?

I did the exact same extroot process as before when it wasn't working. I also didn't have anything installed or configured but the defaults and the network set up prior the extroot config. The system and setup from what I could tell were the same.

The instructions I followed are listed in these links:
Quick Start for Adding a USB drive
Extroot Configuration

Update:
The post above only works for the clone not the genuine Arduino. Most likely because the clone has and requires a driver (ch341) whereas the genuine Arduino UNO does not. I'm guessing this might be confusing the system in someway.

Update:

After further testing I think what actually fixed all the issues is installing the correct drivers to root or the / directory rather than /overlay, which is what I was doing prior. I also installed kmod-usb-acm to root and it worked. However, does anyone know why this is?