Короче у меня есть Arduino Nano и сценарий такой - я хочу чтобы при вставке этого устройства USB в udev правилах запускался определенный bash скрипт, вот правило для моего устройства:
Код: Выделить всё
KERNEL=="ttyUSB[0-9]*",MODE="0777"
ACTION=="add", SUBSYSTEM=="usb",ENV{ID_MODEL_FROM_DATABASE}=="HL-340 USB-Serial adapter", ENV{ID_SERIAL}=="1a86_USB2.0-Serial",RUN+="/arduino/arduino_setup.sh"
Код: Выделить всё
#!/bin/bash
sf=/var/www/sh/serial.txt
sleep 5
stty -F /dev/ttyUSB0 raw -echo 115200
nohup cat /dev/ttyUSB0 > $sf &
Файл serial.txt по указанному пути создается но он пустой - данные никакие не записываются, хоть они с устройства передаются ежесекундно с установленной скоростью передачи 115200 бод на обоих концах. А вот когда я выдергиваю устройство а потом вставляю обратно, то все отлично работает - данные успешно начинают записываться в файл.
Вот почему cat срабатывает со второго раза только? Я уже и слипинги настраивал с разным промежутком времени и от 1 сек. и до 20, даже в разных местах sleep вставлял, но в итоге ничего не получается.
Кстати скорость на stty тоже не устанавливается с первого раза, после выполнения скрипта скорость стоит как 9600, но после повторного вставления устройства как я уже писал выше - все отлично работает, скорость устанавливается а данные успешно пишутся в файл.
Еще что заметил - тоже после перезагрузки когда вставляю устройство а потом запускаю скрипт в ручную через терминал, то все работает с первого раза без каких либо проблем.
Может у кого есть какие идеи? Буду очень благодарен