Dear community members,
We are working in the development of a robot autonomous control system running inside an Intel Edison, which -in turn- runs in a PixHawk automatic pilot module . This system uses ROS (Robot Operating System) and therefore we had to install Ubilinux. Our system requires being connected with a 360-degree laser (RPLIDAR-360) that sends data through a serial channel, so we are trying to get laser's data through USB-to-UART adapter (Silicon lab's CP2102) (the PixHawk only has a USB available for data transfer).
In summary, the laser is connected to the USB2UART adapter, and the adapter is connected to Edison's serial port.
However, we are stuck with some kind of driver issue. When tracing 'dmesg' the device is detected (idVendor=10c4, idProduct=ea60):
[ 917.812195] usb usb2: Product: xHCI Host Controller
[ 917.812214] usb usb2: Manufacturer: Linux 3.10.17-yocto-standard-r2 dwc-xhci
[ 917.812232] usb usb2: SerialNumber: dwc3-host.2
[ 917.812858] xHCI xhci_add_endpoint called for root hub
[ 917.812878] xHCI xhci_check_bandwidth called for root hub
[ 917.813141] hub 2-0:1.0: USB hub found
[ 917.813185] hub 2-0:1.0: 1 port detected
[ 918.128982] usb 1-1: new full-speed USB device number 2 using dwc3-host
[ 918.151786] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea60
[ 918.151818] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 918.151839] usb 1-1: Product: CP2102 USB to UART Bridge Controller
[ 918.151857] usb 1-1: Manufacturer: Silicon Labs
[ 918.151875] usb 1-1: SerialNumber: 0001
With the following details:
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev# = 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 # Cfgs= 1
P: Vendor=10c4 ProdID=ea60 Rev= 1.00
S: Manufacturer=Silicon Labs
S: Product=CP2102 USB to UART Bridge Controller
C:* # Ifs= 1 Cfg# = 1 Atr=80 MxPwr=100mA
I:* If# = 0 Alt= 0 # EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
But no /dev/ttyUSBX device is created, and there are no error messages about missing Drivers or configuration failures.
We are using Ubilinux 3, which reports the following with the 'uname' command:
And the following is the listing of the installed drivers:
Does anyone has had a similar configuration and managed to make work a CP2102 adapter?
As a last resort, we are trying to compile and install the driver by ourselves, using this reference: https://askubuntu.com/questions/941594/installing-cp210x-driver Installing CP210x Driver? - Ask Ubuntu
Unfortunately, the 'make' process crashes due to a lack of headers, but at this point, we are a little afraid of messing with the kernel. Any advice about this approach is also really welcome!
Thanks in advance,
To build the kernel module, it is probably easiest to build the kernel (with the driver selected as module). I don't know what special features ublinux enabled or disabled, but you can build the kernel using Yocto. F.i. this https://github.com/htot/meta-intel-edison/tree/dizzy-uptodate GitHub - htot/meta-intel-edison at dizzy-uptodate will give you a newer version of the kernel than you have. You need to enable the driver in the kernel config, which is a bit done in a non-(Yocto) standard way. In another branch I also have a -rt version of the kernel version you are using.
The latest is pyro64 using a recent 4.13 64 bit kernel and building/configuring in Yocto standard way, but this probably to far from your current kernel to work well.
Or you can clone https://github.com/htot/edison-linux/tree/edison-3.10.17 GitHub - htot/edison-linux at edison-3.10.17 . As you can see I added a few patches here myself to enable ftdi usb-serial converter and smsc95xx usb/eth adapter. If you checkout the ftdi patch https://github.com/htot/edison-linux/commit/0f9c0c55188ec6c388edc562d55ac6745550f591 defconfig: enable FTDI usb serial adaptors · htot/edison-linux@0f9c0c5 · GitHub you can see at the top cp210x was / is already enabled as module.
Are you sure just 'modprobe -i cp210x' doesn't work? (check lsmod for the result).
I just found on my old (standard Edison) file system:
root@edison:~# ls /media/lib/modules/3.10.17-poky-edison+/kernel/drivers/usb/serial/
Unfortunately, Ubilinux OS on the Intel Edison is out of our support scope. The image we do support is the Yocto Poky image. The following link will direct you to the latest Edison image: https://downloadcenter.intel.com/download/27074/Intel-Edison-Yocto-Poky-image https://downloadcenter.intel.com/download/27074/Intel-Edison-Yocto-Poky-image
We cannot confirm if the CP2101 adapter is compatible with the Yocto Poky image ,since this has not been validated.
If you have further questions regarding the Yocto image, don't hesitate to contact us.
Maybe not but is built as a module in the standard Edison kernel https://github.com/01org/edison-linux/blob/edison-3.10.17/arch/x86/configs/i386_edison_defconfig edison-linux/i386_edison_defconfig at edison-3.10.17 · 01org/edison-linux · GitHub and https://github.com/01org/edison-linux/blob/edison-3.10.98/arch/x86/configs/i386_edison_defconfig edison-linux/i386_edison_defconfig at edison-3.10.98 · 01org/edison-linux · GitHub
There is no particular reason to think it will not work. My guess: either it is not built with Ubilinux or the module is not automatically inserted.