Bem, isso não é uma resposta para a pergunta, mas me traz uma solução. então aqui está.
Eu brinco bastante com as regras do Udev, não consegui nada melhor do que o meu Arduino aparecer persistentemente em /dev/arduino01
(usará /dev/arduino02
, /dev/arduino03
, ... para outros gabaritos)
Meu script de teste está em Python, acabei de descobrir que há uma boa biblioteca chamada pyudev então decidi dar uma olhada nessa rota.
Depois de apenas alguns minutos, acabei com
from pyudev import *
context = Context()
Arduino = Device.from_device_file(context, '/dev/arduino01')
Hub = Arduino.find_parent("usb","usb_device").find_parent("usb") #first find_parent brings me up to the USB device Arduino, another find_parent brings me to the Hub
Fixture = Enumerator(context)
for dev in Fixture.match_parent(Hub).match_subsystem('tty'):
if (dev.get('ID_VENDOR_ID')=="10c4" and dev.get('ID_MODEL_ID')=="ea60"): #I got those ID through udevadm.
powermeter=dev
if (dev.get('ID_VENDOR_ID')=="067b" and dev.get('ID_MODEL_ID')=="2303"): #I got those ID through udevadm.
temprecorder=dev
print('Arduino in on ' + str(Arduino.device_node)) #prints : Arduino is on /dev/ttyACM0
print('Powermeter in on ' + str(powermeter.device_node)) #prints : Powermeter is on /dev/ttyUSB1
print('Thermometer in on ' + str(temprecorder.device_node)) #prints : Thermometer is on /dev/ttyUSB0
Isso me dá as portas USB dos meus 3 dispositivos do jig de teste, agora posso alimentá-lo com meu script de rotina de teste.
O mais experiente entre nós terá visto que o meu temprecorder é através de um serial USB pl2303 e meu powermeter através de um serial USB CP2102.