Disconnect and reconnect ttyUSB0 programmatically in Linux
bash, linux, serial-port, tty
Solution
This is the solution:
Find the identity of your usb device.
# tree /sys/bus/usb/drivers/cp210x/
/sys/bus/usb/drivers/cp210x/
|-- 1-1:1.1 -> ../../../../devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-1:1.1
|-- bind
|-- module -> ../../../../module/cp210x
|-- remove_id
|-- uevent
-- unbind
So `1-1:1.1` is the identifier of my `ttyUSB0`(it can be discovered also via `dmesg`).
Then, disconnect the device (as root):
# echo -n "1-1:1.1" > /sys/bus/usb/drivers/cp210x/unbind
reconnect it
# echo -n "1-1:1.1" > /sys/bus/usb/drivers/cp210x/bind
At this point I had the same device but with a different name, it was now ttyUSB1 instead of ttyUSB0. - To avoid this I added a new rule in `/etc/udev/rules.d/` by creating a new file named `99-usb-serial.rules` with this line:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea70", ATTRS{serial}=="002DCFAF", SYMLINK+="sameName", MODE:="0666"
where `idVendor`, `idProduct` and serial must be the values of your device. This rule will create a new device called `sameName` linked to the `ttyUSB*` device normally generated from the OS.
Problem
Trying to solve this problem (ttyUSB0 that works properly than stop working after about 1hr)I'm thinking on if disconnecting and reconnecting the usb device could be a good fix. So, it is possibile to cut down power to the USB device and repower it programmatically (bash)? ``` # lsusb -t 1-1:1.0: No such file or directory /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M |__ Port 1: Dev 2, If 0, Class=vend., Driver=, 12M |__ Port 1: Dev 2, If 1, Class=vend., Driver=cp210x, 12M ``` On am335x, kernel 3.2.0, ubuntu core armhf. ``` [ 1.784332] usb 1-1: cp210x converter now attached to ttyUSB0 ``` At the moment I need a complete power cycle to have `ttyUSB0` back.