Ubuntu – Ubuntu Touch – USB serial drivers/modules

driversubuntu-touchusb

I have a BQ Aquarius E4.5 and would like to connect it to various peripherals so I can use it for remote monitoring/telemetry. This would be easy to do if I could get a USB serial adapter to work.

I have an on-the-go USB cable and can plug in a USB memory stick and it will work as expected. So far so good.

I have tried plugging in a standard Aten USB/Serial adapter and I see a usbdev1.x device appearing in /dev/, but no /dev/serial and /dev/ttyUSB0 as I get when I plug it into a regular Debian machine.

Likewise, plugging in an Arduino Nano (which uses a Future Devices USB UART) works as far as: The Nano gets power and a /dev/usbdev1.x device appears – but no /dev/serial and no /dev/ttyUSB0.

No messages appear in /var/log/syslog other than "a USB device was connected".

What am I missing ? Is it "just" the USB serial module ? And then – how to install it ?

The phone is running Ubuntu Touch 15.04 (r23).

Best Answer

Thanks to ubuntu to get that functionality you will have to recompile the kernel. If you are still interested read bellow :)

All of usb serial adapters are by default disabled in any UT kernel. (thank you ubuntu for being so un-cool) [sarcasm on] as you are supposed to use this device only for socio* webapps (tweet, fazebook, stare to UT calendar) and do not dare to do anything cool [sarcasm off]. Look to the source of the kernel https://github.com/bq/aquaris-E4.5/tree/aquaris-E4.5/ change the configure file to enable your USB UART device and then crosscompile it (I think the best up to date instruction is this how to do that: https://sturmflut.github.io/ubuntu/bq/2015/07/02/hacking-the-bq-part-4-building-and-booting-a-kernel/) You should add the line for supporting your own USB UART device in the step 3 described in the above linked tutorial. To know the exact sting to write it is good to see mainline default kernel (3.4) tree, and add the appropriate line. Or look bellow....

The E.5 source tree is such a mess, and I could not find exact defconfigs for this device, however I am familiar with defconfigs of bq M10 (Caveat it is kernel 3.10 instead of 3.4 as on E4.5, some device drivers can be unavaliable in 3.4 tree), I provide the excerpt with it bellow. Find your device, and copy exact string to the 'project' configuration file mentioned in the link given before with instructions, uncomment and set it to 'y' at step 3 there:

#
# USB port drivers
#
CONFIG_USB_SERIAL=y
# CONFIG_USB_SERIAL_CONSOLE is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP210X is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_F81232 is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_METRO is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_MOTOROLA is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_QCAUX is not set
# CONFIG_USB_SERIAL_QUALCOMM is not set
# CONFIG_USB_SERIAL_SPCP8X5 is not set
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_SYMBOL is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_ZIO is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
# CONFIG_USB_SERIAL_ZTE is not set
# CONFIG_USB_SERIAL_SSU100 is not set
# CONFIG_USB_SERIAL_QT2 is not set
# CONFIG_USB_SERIAL_DEBUG is not set 

Not crippled linux would work with only missing kernel module compiled.But in this android-like kernel I am very unsure it would work with module, at least I could not find any instructions showing how to do that on these mediatek-android devices.

It appears Ubuntu shaved a lot of goodies from kernel, probably trying to hide very huge RAM usage by unity. This default setup makes impossible to use the tablets/phones with UT for anything other than reading mails, tweeting, stairing to UT calendar and calculating 1+1. Nothing cool by default.