
私のRaspberry Piには2つのUCANDEVICE USBアダプタが接続されています。この2つの機器を接続すると/dev
(ttyACM0
と)に表示されますttyACM1
。
各ドングルを明確に識別するために、次のudevルールがあります。
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c"
その中には、ドングルのシリアル番号をcan-device-namer.py
連結して返すスクリプトがあります。ttACMx
このルールは非常に効果的であり、現在両方のUCANDEVICESの名前を/dev
CAN-N16014350
CAN-N1613434B
slcand
では、起動時に開始されるサービスを自動的に開始したいと思います。CAN0
CAN1
そのために、udevルールを次のように修正しました。
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c", TAG+="systemd", ENV{SYSTEMD_WANTS}="slcand@%k.service"
私の[email protected]
外観は次のとおりです。
[Unit]
Description=Serial CAN daemon (can-utils)
BindsTo=dev-%i.device
After=dev-%i.device
[Service]
Type=forking
StopWhenUnneeded=yes
Environment=SLCAND_OPTS="-o -c -s6" SLCAND_DEV=can0
EnvironmentFile=-/etc/default/slcand
EnvironmentFile=-/etc/sysconfig/slcand
ExecStart=/usr/bin/slcand $SLCAND_OPTS %I $SLCAND_DEV
ExecStartPost=/bin/sh -c '/bin/sleep 3; /sbin/ip link set $SLCAND_DEV up'
私の問題は、で[email protected]
始まり、ttyACM0
SIMLINKルール(たとえば)を使用して、指定された/dev/CAN-N16014350
名前を使用して/dev/CAN-N16014350
常におよびCAN0
で/dev/CAN-N1613434B
始まるようにしたいということですCAN1
。
CAN0
私の究極の目標は、CAN1
SN N16014350を持つUCANDEVICEが接続され、SN N1613434Bを持つUCANDEVICEが接続されたときに自動的に開始することです。
現在は2つのドングルしか持っていませんが、3つまたは4つでも動作します。おそらく、デバイス名とCAN名の間の割り当てで設定ファイルを定義する必要があります。
あなたの助けをいただきありがとうございます:)