I am using an Omega2, Expansion Dock, Hologram Cellular Expansion, and the GPS Expansion. both the hologram and GPS enumerate as uBlox devices on the usb bus when they are plugged into the expansion dock separately. however, there does not seem to be a way to connect both the GPS and Cellular Expansion together simultaneously because the Cellular card is loaded first by the kernel and consumes six total /dev/ttyACM handles, including /dev/ttyACM0. subsequently, the gps card is never given a /dev/ttyACM handle.
i have generated a custom /etc/hotplug.d/usb rule that symlinks the gps to a specific dev port (/dev/gps0), but this rule only fires if the gps is the only accessory in the system. i grep the logread output, and it is clear that this specific rule no longer fires if the cellular card already exists on the expansion dock.
the output from the lsusb command when the cellular card is the only card in the system looks the same as when the gps + cellular card are both plugged in:
root@Omega-F1EF:~# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 1, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 2, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 3, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 4, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 5, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 6, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 7, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 8, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 9, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 10, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 11, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 12, Class=Communications, Driver=cdc_acm, 480M
|__ Port 1: Dev 2, If 13, Class=CDC Data, Driver=cdc_acm, 480M
is this by design? how come there can be only 6 usb slots (2 ea per Data/Comms)
how can you get the procd system to enumerate these two devices properly? is there some custom hotplug rule that i should be writing to prevent the cellular card from consuming all the usb slots?
happy to share my symlink code as that was a real pita to sort out as well. openwrt is a very limited o/s and probably should have adopted udev to make this kind of rule generation easier, but at least this sortof works.