2016-07-12 11 views
1

Laufen "uname -a" auf meinem Raspberry Pi ergibt folgendes: Linux tm-gw 4.4.14-v7 + # 896 SMP Sat Jul 2 15:09:43 BST 2016 armv7l GNU/LinuxAktualisieren von Produkt/Hersteller-ID auf Raspberry Pi (CP210X)

Mein Problem ist, dass ich ein USB-Gerät habe, dessen Hersteller- und Produkt-ID nicht in CP210x.c-Datei registriert ist, was wiederum bedeutet, dass, obwohl es gefunden werden kann, die Himbeere keine Kommunikation mit ihm erlauben (/ dev/ttyUSB0 existiert nicht).

Ich habe versucht, den Kernel herunterzuladen, das ID-Paar zur cp210x.c-Datei hinzufügen, neu aufbauen und installieren, was funktioniert. (dmesg zeigt "usb 1-1.4: cp210x converter jetzt an ttyUSB0 angehängt")

Da ich dieses Programm auf mehr als einer Himbeere installieren muss, dauert es zu lange, also würde ich gerne wissen, ob es möglich ist die USB-IDs injizieren, ohne den Kernel neu zu kompilieren?

Ich habe versucht, die cp210x.ko-Datei aus dem Kernel, den ich baue, zu nehmen und es auf eine neue Himbeere zu installieren, indem ich "sudo insmod cp210x.ko" eintippte, aber das hat nicht funktioniert.

/Karsten

+0

Ein Kernelmodul kann nur geladen werden, wenn die Modulversionsnummer genau übereinstimmt. Wenn Sie den Raspberry Pi mit dem Kernel booten, für den Sie gebaut haben, sollte insmod cp210x.ko funktionieren. Wenn Sie den alten Kernel behalten möchten, aber das Modul laden, das gegen die Kernel-Quelle erstellt wurde, auf der Sie die Änderung vorgenommen haben, wird es nicht funktionieren. – Sanchayan

+0

Ich habe es nicht versucht, aber Sie sollten in der Lage sein, echo VEND PROD>/sys/bus/usb-seriell/cp210x/new_id' wo "VEND" und "PROD" sind die vierstellige hexadezimale Hersteller und Produkt IDs des neuen Geräts. Du wirst wahrscheinlich vorher eine 'modprobe cp210x' machen müssen. Wenn es funktioniert, legen Sie die Befehle in ein lokales Startskript. –

+0

@Sanchayan: Ich habe versucht, das neue .ko-Modul in den alten Kernel zu laden, und Sie haben Recht: Es hat nicht funktioniert :-D –

Antwort

1

Dank Ian Abbott für die Lösung.

Run "sudo modprobe CP210x" dann

sudo sh -c 'echo 10c4 84cc>/sys/bus/usb-serial/drivers/CP210x/new_id'

Wenn im Gerät einstecken funktioniert :-)

+0

Froh, dass es funktioniert hat. Was genau ist das Gerät? Ich kann einen Patch an die entsprechenden Linux-Betreuer und Mailinglisten senden, wenn Sie möchten. –

+0

@Ian Abbott, Es ist ein Controller für ein Biomasse-Kessel-System, das wir an ein RP anschließen, also wäre es großartig, wenn es Teil der Liste der zugelassenen Geräte sein könnte. Eigentlich würde ich gerne wissen, wie man sich für Änderungen bewirbt, da wir ein paar mehr IDs haben, die implementiert werden sollten. –

+0

Beachten Sie den Hinweis in "Documentation/SubmittingPatches". Es ist im Grunde ein Fall, einen Patch gegen den aktuellen "linux-next" Kernel mit einer richtigen Zusammenfassung, Beschreibung und "Signed-off-by:" Zeile zu erstellen. Ein Beispiel für einen Patch für den cp210x-Treiber finden Sie in der Ausgabe von 'git show --format = email 6627ae19' in einem Linux-Git-Repository. Es ist am besten in git zu arbeiten, da es Patches erzeugen kann ('git format-patch') und sogar per E-Mail versenden kann (' git send-email'). Siehe "USB SERIAL SUBSYSTEM" in der Datei MAINTAINERS des Kernels, wo Sie die Patches senden können. –