Ich versuche gerade eine UDEV rule zum laufen zu bewegen leider vergebens ..
es geht um den Arduino Microcontroller welcher ein skript beim anstecken ausführen , und beim abstecken beenden soll. gleichzeitig wird mit der rule auch ein symlink erstellt .
die rule sieht so aus:
|
Quellcode
|
1
2
3
|
# cat /etc/udev/rules.d/11-arduino.rules
SUBSYSTEMS=="usb", ATTRS{product}=="FT232R USB UART", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ACTION=="add", SYMLINK+="arduino arduino_$attr{serial}, RUN+="/bin/bash /FUT/arduino-listener.sh"
SUBSYSTEMS=="usb", ATTRS{product}=="FT232R USB UART", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ACTION=="remove", RUN+="killall arduino-listener.sh"
|
Das symlink erstellen funktioniert, somit nehme ich an dass die ATTRS stimmen .. daher .. die Regel greift schon mal , jedoch wird das skript nicht ausgeführt.
Irgendwo habe ich gelesen dass man wegen den fehlenden umgebunsgvariablen im auszuführenden skript alles mit voll pfad definieren muss .. das habe ich nun auch getan:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# cat /FUT/arduino-listener.sh
#!/bin/bash
# su - dj -c "/FUT/arduino-listener.sh &" 2> /dev/null
/bin/stty -F /dev/ttyUSB0 raw speed 115200
i=0
function arduread
{
ardread=`/usr/bin/head -n 1 /dev/ttyUSB0`
case $ardread in
\01*) /bin/echo "waxit 02";;
\02*) /usr/bin/waxit -repair 2;;
\03*) /usr/bin/waxit -r 2
/usr/bin/perl -e 'select(undef,undef,undef,.1)'
/usr/bin/waxit -c 2;;
\04*) /usr/bin/waxit -r 3
/usr/bin/perl -e 'select(undef,undef,undef,.1)'
/usr/bin/waxit -c 3;;
\05*) /bin/echo "waxit 06";;
\06*) /usr/bin/waxit -repair 3;;
\07*) /usr/bin/waxit &;;
\08*) /usr/bin/unwaxxit;;
\09*) /bin/echo "waxit 10";;
\10*) /usr/bin/waxit -repair 1;;
\11*) /usr/bin/waxit &;;
\12*) /usr/bin/waxit -r 1
/usr/bin/perl -e 'select(undef,undef,undef,.1)'
/usr/bin/waxit -c 1;;
esac
}
while [ $i -eq 0 ];
do
arduread
done
|
hat jemand eine Idee ? .. ich irgendwie nicht mehr ..