handdator

Visa fullständig version : USB AD-Teknikläsare alltid med samma device id



eviln
2009-02-25, 14:12
Vad du behöver innan, en fungernade linuxinstallation som använder udev för att skapa devices.
Du kollar genom att skriva köra kommandot udevinfo --version (svarar med ett nummer, i mitt fall 125)

1. Samla ihop dina läsare i en hög och kontrollera att alla har ID chip installerat (chippet sitter längst upp till höger om du håller usbkontakten uppåt. tom sockel = inget chip = detta kommer inte att fungera.

2. plugga i en av läsarna och kör följande kommando:

udevinfo -a -p $(udevinfo -q path -n /dev/ttyUSB0) | grep serial

Anteckna nummret i raden som ser ut typ: ATTRS{serial}=="FTRXAABB" på respektive läsare. Detta är vad som identifierar respektive läsare.
Repetera för varje separat läsare tills du har alla chip ids noterade.

3. nu ska vi skapa udev regler för respektive läsare. Här kan det skilja sig en del mellan olika distros vad udev filerna heter så ta reda på violken som är lämplig att redigera genom att skriva följande:
cd /etc/udev/rules.d (och sedan enter)
grep ttyUSB * (och enter)
det första som står bör vara vilken fil (eller filer som innehåller regler för att redigera usb/resiella devices).
Sagt och gjort, vi redigerar 50-udev.rules (i mitt fall) med den editor vi kan hantera.
För den som inte fattar det här med unix och linux kan man rekommendera nano som editor då den är rättfram och enkel att hantera från början, ni andra vet ju vad ni gillar...

Leta reda på raden som innehåller "KERNEL=="ttyUSB*"
På raden ovanför lägger du till din egen regel för att skapa devices och den bör se ut så här:

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{serial}=="FTRXAABB",SYMLINK+="adteknik/adph0"
Den här raden ser till att skapa ett device som ligger i /dev/adteknik/adph0 om läsaren med serienummer FTRXAABB kopplas in.

Låt oss göra fyra separata devices:

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{serial}=="FTRXAABB",SYMLINK+="adteknik/adph0"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{serial}=="FTRXAACC",SYMLINK+="adteknik/adph1"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{serial}=="FTRXAADD",SYMLINK+="adteknik/adph2"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{serial}=="FTRXAAEE",SYMLINK+="adteknik/adph3"
Varje rad innehåller ett unikt serienummer (som vi plockade fram tidigare och noterade) samt ett device som skapas för respektive läsare. Jag har valt att kalla dem för adteknik/adph?. Här kan ni naturligtvis döpa grejerna precis som ni vill.
Skippa adteknik/ så hamnar alla dina devices direkt i /dev istället för /dev/adteknik
Egentligen pekar det skapade devicet med en symlänk till ett device i /dev/ttyUSB? men det viktiga är att vi alltid frå samma namn på samma kortläsare och det får vi på det här sättet.

4. inte riktigt klara, vi måste starta om udev för att få det hella att fastna.
De flesta linux distros har nog ett färdig script för detta och borde kunan köras genom att skriva:

/etc/init.d/udev restart
om något sådant script inte finns så testa följande:

kill -1 `pidof udevd`
Skulle det inte heller lira så funkar alltid en hederlig reboot.

:thumbup:

Plow
2009-10-02, 18:03
man tackar och bockar för denna guide...

hingstin
2009-10-26, 22:37
Hej
håller med föregående skribent... :thumbup:

Kanske ett litet förtydligande.
Var så ivrig på att testa efter modifieringen, att jag glömde ändra mina befintliga dev (devices)

så om ni tex har haft det att se ut så här i er "gamla" config.

<node>/dev/ttyUSB0</node>så borde det se ut såhär nu: (om ni följt guiden och använt samma namn som där)

<node>/dev/adteknik/adph0</node>~G

hoppas detta löser mina prob. nu,
skaffade en asus aspire one a110 (ihopp om att få en perfekt server = liten, tyst, inbyggd skärm, batteribackup, mm) och efter det verkar det som om servern inte kunnat hålla reda på kortläsarna.

juppe
2010-09-25, 12:25
hejsan, har följt denna guide och vet inte om det funkar, har nämligen bara en läsare än så länge, så min fråga är om man måste göra som hingstin skriver, att man måste ändra vad läsaren heter i configen, jag använder oscam och när jag ändrar i min config som hingstin skriver, så hittar inte oscam läsaren, men om jag behåller det gamla så funkar allt, hur kan jag se att min läsare nu alltid kommer att få samma device id?

/Juppe

sleddog
2010-09-25, 12:30
hejsan, har följt denna guide och vet inte om det funkar, har nämligen bara en läsare än så länge, så min fråga är om man måste göra som hingstin skriver, att man måste ändra vad läsaren heter i configen, jag använder oscam och när jag ändrar i min config som hingstin skriver, så hittar inte oscam läsaren, men om jag behåller det gamla så funkar allt, hur kan jag se att min läsare nu alltid kommer att få samma device id?

/Juppe

Enklaste sättet att koll om det funkar är ju att du drar ut läsare, ploppar ine en annan USB enhet först och sen tillbaks med läsaren och starta OSCAM.

Funkar OSCAM nu så har du gjort rätt, annars har du gort fel.

juppe
2010-09-25, 12:58
OK, testade och om det är som du skriver, så funkar det, ska testa mer när jag får hem min andra läsare.

Tackar för snabbt svar

logar
2010-09-28, 08:03
Om udevinfo-länken inte finns med i eran dist så kör detta.

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSBx) | grep serial

kecord
2010-11-10, 23:22
Sedan denna guide skrevs så har udev ändrats lite. (Kör version 151)
Alla kommandon körs med udevadm

Sedan går det inte redigera någon default-rule-fil (som i guiden 50-udev.rules) eftersom dessa finns i /lib/udev/rules.d/ och skall ej redigeras.

Vill man lägga in egna rules kan man enkelt göra det genom att skapa en ny fil i /etc/udev/rules.d
ex. 50-cardreaders.rules (50 anger normal prio)
i denna fil kan man sedan lägga sina läsare.

Skulle man vilja sätta en ett fast device-id på en läsare utan id-chip kan man göra det genom följande rad som fungerar för mig.
(Fungerar naturligtvis endast om man bara har en läsare utan id-chip.)



SUBSYSTEMS=="usb", KERNEL=="ttyUSB*",ATTRS{product}=="USB <-> Serial",SYMLINK+="adph0"