Hallo, wieder mal eine etwas speziellere Frage. Ich bin von einem Kernel zum nachsten Umgestiegen. Eigentlich läuft fast alles wie gehabt, nur der Name des spidev hat sich geändert (von /dev/spidev32766.0 nun zu /dev/spidev0.0). Ehrlich gesagt wusste ich vorher nicht woher die "32766" kommt, ich hab es hingenommen. Wenn es am devicetree liegt (was ich annehme) so habe ich den zwischen den Kernel-Versionen nicht geändert - das ist also noch der gleiche. Ist das ein Problem?
Wenn geklärt wäre woher und warum das so ist - was mach ich am besten damit? Ich hab ein paar Programme die auf "spidev32766.0" gehen. Neu kompilieren geht natürlich, aber leicht den Kernel wechseln (um die Performace zu vergleichen) geht dann nicht mehr. Im /dev einen Link anlegen? Muss ja dann jedesmal beim booten passieren? Wie kann man sowas verhindern, was hab ich falsch gemacht?
Gruß Arno
Arno Steffens epsi@gmx.de hat am 24. Juli 2018 um 10:02 geschrieben:
Hallo, wieder mal eine etwas speziellere Frage. Ich bin von einem Kernel zum nachsten Umgestiegen. Eigentlich läuft fast alles wie gehabt, nur der Name des spidev hat sich geändert (von /dev/spidev32766.0 nun zu /dev/spidev0.0). Ehrlich gesagt wusste ich vorher nicht woher die "32766" kommt, ich hab es hingenommen. Wenn es am devicetree liegt (was ich annehme) so habe ich den zwischen den Kernel-Versionen nicht geändert - das ist also noch der gleiche. Ist das ein Problem?
Wenn geklärt wäre woher und warum das so ist - was mach ich am besten damit? Ich hab ein paar Programme die auf "spidev32766.0" gehen. Neu kompilieren geht natürlich, aber leicht den Kernel wechseln (um die Performace zu vergleichen) geht dann nicht mehr. Im /dev einen Link anlegen? Muss ja dann jedesmal beim booten passieren? Wie kann man sowas verhindern, was hab ich falsch gemacht?
Hi Arno, die Namensvergabe erfolgt häufig über den udev, hast du mal nachgesehen was sich da geaendert hat ?
re, wh
Am Dienstag, 24. Juli 2018 10:39 CEST, Walter Harms wharms@bfs.de schrieb:
Hallo,
Walther war mal wider schneller ...
Hi Arno, die Namensvergabe erfolgt häufig über den udev, hast du mal nachgesehen was sich da geaendert hat ?
Jain. Die Namensvergabe macht der Kernel (bzw. der "Treiber", also das entspr. Kernel-Modul). Man kann sich mit Udev da reinhängen und (u.a.) konfigurieren wo und unter welchem Namen ein Device im Device-Tree auftaucht. Das ist recht praktisch wenn man sichergehen will dass bestimmte Hardware (Platte, Wlan-Stick, Midi-Keyboard) immer mit dem gleichen Namen ansprechbar ist. Dazu muss man dann ggf. "nur" eine Regel schreiben anhand derer udev solche Namen zuweist. Solche Regeln bestehen aus einem Match-Teil (für welche Devices gilt die Regel) und einem Action-Teil (was soll udev machen wenn so ein Device auftaucht). Im Match-Teil kann z.Bsp. auf die ersteller-ID (Vendor-ID), den Gerätetyp (Device-ID) aber auch z.Bsp. die PCI-Bus/Device Nummer getestet werden. Du musst also nur für Dein Device eine passende Regel schreiben die dem Teil immer den selben Namen verpasst. Um die Vendor-/Device-ID etc. des Devices herauszufinden emfiehlt sich:
$sudo udevadm info /dev/spidev0.0
Gruss RalfD
Gesendet: Dienstag, 24. Juli 2018 um 11:40 Uhr Von: "Ralf Mattes" rm@mh-freiburg.de An: "Walter Harms" wharms@bfs.de Cc: "Arno Steffens" epsi@gmx.de, flug flug@lug-freiburg.de Betreff: Re: /dev/spdiv name ?
Am Dienstag, 24. Juli 2018 10:39 CEST, Walter Harms wharms@bfs.de schrieb:
Hallo,
Walther war mal wider schneller ...
Hi Arno, die Namensvergabe erfolgt häufig über den udev, hast du mal nachgesehen was sich da geaendert hat ?
Jain. Die Namensvergabe macht der Kernel (bzw. der "Treiber", also das entspr. Kernel-Modul). Man kann sich mit Udev da reinhängen und (u.a.) konfigurieren wo und unter welchem Namen ein Device im Device-Tree auftaucht. Das ist recht praktisch wenn man sichergehen will dass bestimmte Hardware (Platte, Wlan-Stick, Midi-Keyboard) immer mit dem gleichen Namen ansprechbar ist. Dazu muss man dann ggf. "nur" eine Regel schreiben anhand derer udev solche Namen zuweist. Solche Regeln bestehen aus einem Match-Teil (für welche Devices gilt die Regel) und einem Action-Teil (was soll udev machen wenn so ein Device auftaucht). Im Match-Teil kann z.Bsp. auf die ersteller-ID (Vendor-ID), den Gerätetyp (Device-ID) aber auch z.Bsp. die PCI-Bus/Device Nummer getestet werden. Du musst also nur für Dein Device eine passende Regel schreiben die dem Teil immer den selben Namen verpasst. Um die Vendor-/Device-ID etc. des Devices herauszufinden emfiehlt sich:
$sudo udevadm info /dev/spidev0.0
Gruss RalfD
Hallo Ralf, das wäre perfekt, wenn ich dem udev eine Regel mitgeben kann. Ich schau mir das mal an, so ganz trivial war das nicht. Hab schon mal damit geschafft, das device für alle nutzbar zu machen mit dieser Regel:
KERNEL=="spi*", MODE="0666"
Ich schau auch noch mal in den spidev Treiber - ob ich da was versteh ist die andere Sache ;) Viele Grüße Arno
Gesendet: Dienstag, 24. Juli 2018 um 10:39 Uhr Von: "Walter Harms" wharms@bfs.de An: "Arno Steffens" epsi@gmx.de, flug flug@lug-freiburg.de Betreff: Re: /dev/spdiv name ?
Arno Steffens epsi@gmx.de hat am 24. Juli 2018 um 10:02 geschrieben:
Hallo, wieder mal eine etwas speziellere Frage. Ich bin von einem Kernel zum nachsten Umgestiegen. Eigentlich läuft fast alles wie gehabt, nur der Name des spidev hat sich geändert (von /dev/spidev32766.0 nun zu /dev/spidev0.0). Ehrlich gesagt wusste ich vorher nicht woher die "32766" kommt, ich hab es hingenommen. Wenn es am devicetree liegt (was ich annehme) so habe ich den zwischen den Kernel-Versionen nicht geändert - das ist also noch der gleiche. Ist das ein Problem?
Wenn geklärt wäre woher und warum das so ist - was mach ich am besten damit? Ich hab ein paar Programme die auf "spidev32766.0" gehen. Neu kompilieren geht natürlich, aber leicht den Kernel wechseln (um die Performace zu vergleichen) geht dann nicht mehr. Im /dev einen Link anlegen? Muss ja dann jedesmal beim booten passieren? Wie kann man sowas verhindern, was hab ich falsch gemacht?
Hi Arno, die Namensvergabe erfolgt häufig über den udev, hast du mal nachgesehen was sich da geaendert hat ?
re, wh
Hallo Walter, tatschächlich habe ich nur den Kernel getauscht, das gesamte Filesystem und sogar der devicetree ist gleich geblieben. Für mich die einzige Erklärung ist, dass der spidev-Kernel Treiber sich irgendwie geändert hat. Den Kernel werd ich sicher weiter ändern, aber ich möchte natürlich nicht die Applikationen dafür immer neu bauen müssen. Daher möchte ich der Sache auf den Grund gehen. Gruß Arno
Hallo Arno,
On 07/24/2018 10:02 AM, Arno Steffens wrote:
Ich bin von einem Kernel zum nachsten Umgestiegen. Eigentlich läuft fast alles wie gehabt, nur der Name des spidev hat sich geändert (von /dev/spidev32766.0 nun zu /dev/spidev0.0). Ehrlich gesagt wusste ich vorher nicht woher die "32766" kommt, ich hab es hingenommen. Wenn es am devicetree liegt (was ich annehme) so habe ich den zwischen den Kernel-Versionen nicht geändert - das ist also noch der gleiche. Ist das ein Problem?
Ist kein Problem. Zeig' mal Deinen Device-Tree. Bist Du sicher, dass der wirklich gleich ist, und die includes nicht z.B. vom upgedateten Kernel kommen?
Wenn geklärt wäre woher und warum das so ist - was mach ich am besten damit?
Am robustesten ist es, per sysfs rauszuknobeln welches Gerät das richtige ist. Oder (noch besser!!) einen vernünftigen Treiber für das spi-Gerät zu schreiben. Wenigstens den Device-Namen konfigurierbar machen, wäre meines Erachtens angesagt.
Ich hab ein paar Programme die auf "spidev32766.0" gehen. Neu kompilieren geht natürlich, aber leicht den Kernel wechseln (um die Performace zu vergleichen) geht dann nicht mehr.
32766 ist übrigens die spi Busnummer. Vermutlich treffen Dich die Auswirkungen von https://git.kernel.org/linus/9b61e302210eba55768962f2f11e96bb508c2408 . (Den kriegst Du wenn Du auf 4.14-rc1 oder neuer updatest.)
Liebe Grüße Uwe
Gesendet: Dienstag, 24. Juli 2018 um 14:14 Uhr Von: "Uwe Kleine-König" uwe@kleine-koenig.org An: flug@lug-freiburg.de Betreff: Re: /dev/spdiv name ?
Hallo Arno,
On 07/24/2018 10:02 AM, Arno Steffens wrote:
Ich bin von einem Kernel zum nachsten Umgestiegen. Eigentlich läuft fast alles wie gehabt, nur der Name des spidev hat sich geändert (von /dev/spidev32766.0 nun zu /dev/spidev0.0). Ehrlich gesagt wusste ich vorher nicht woher die "32766" kommt, ich hab es hingenommen. Wenn es am devicetree liegt (was ich annehme) so habe ich den zwischen den Kernel-Versionen nicht geändert - das ist also noch der gleiche. Ist das ein Problem?
Ist kein Problem. Zeig' mal Deinen Device-Tree. Bist Du sicher, dass der wirklich gleich ist, und die includes nicht z.B. vom upgedateten Kernel kommen?
Wenn geklärt wäre woher und warum das so ist - was mach ich am besten damit?
Am robustesten ist es, per sysfs rauszuknobeln welches Gerät das richtige ist. Oder (noch besser!!) einen vernünftigen Treiber für das spi-Gerät zu schreiben. Wenigstens den Device-Namen konfigurierbar machen, wäre meines Erachtens angesagt.
Ich hab ein paar Programme die auf "spidev32766.0" gehen. Neu kompilieren geht natürlich, aber leicht den Kernel wechseln (um die Performace zu vergleichen) geht dann nicht mehr.
32766 ist übrigens die spi Busnummer. Vermutlich treffen Dich die Auswirkungen von https://git.kernel.org/linus/9b61e302210eba55768962f2f11e96bb508c2408 . (Den kriegst Du wenn Du auf 4.14-rc1 oder neuer updatest.)
Liebe Grüße Uwe
Hallo Uwe, ja genau, bin auf den 4.14 umgestiegen. Bum! Der Devictree steht noch irgendwo im Flash, um den neu zu erzeugen müsste ich erst mal ganz tief graben.
Da ich ja meinen alten Kram nicht mehr ändern kann bin ich auf die Idee von Ralf zurück. Man kann zwar device nodes nicht umbenennen, aber ich hab udev beigebracht einen link zu erzeugen.
Danke an euch alle drei! Liebe Grüße Arno