USB.IDS & USBDOCK.DAT

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Antworten
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

USB.IDS & USBDOCK.DAT

Beitrag von wilfried »

Von USB.IDS findet man aktualisierte Versionen im Netz. Für USBDOCK.DAT war ich bisher erfolglos.
Ich habe daher auf meiner To-Do-Liste einen Format-Converter von USB.IDS nach USBDOCK.DAT stehen.
Bevor ich wieder etwas baue was es schon längst gibt. Kennt jemand eine bestehende Lösungbzw. eine Bezugsquelle für USBDOCK.DAT?

Hintergrund:
Diese Dateien sind zur USB-Geräteerkennung erforderlich (USBDOCK und USBRES)
Da USBDOCK deutlich schneller ist suche ich dafür aktualisierte Gerätelisten.
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Aha, wieder mal ein Thema was die Welt nicht braucht. :D
Na egal, Converter funktioniert und macht aus einer USB.IDS eine USBDOCK.DAT.

Code: Alles auswählen

/* REXX */
/* 25.04.2017 ERSTELLT W. EIKE                 */
/* USBIDS_TO_USBDOCK erzeugt aktuaslisierte USBDOCK.DAT aus USB.IDS */

 parse upper arg args
 parse version rexxType .
 parse source platform . . work
 MONITOR = platform

 INP1 = 'USB.IDS'

 If RxFuncQuery( 'sysstemsort' ) \= 0 Then,
  Do
   call RxFuncAdd  'sysloadfuncs', rexxutil, 'sysloadfuncs'
   Call SysLoadFuncs
  End

 say '[USBDock]'
 say 'source0=eComStation users and developers'
 say 'source1=http://www.linux-usb.org/usb.ids'
 say 'source2=http://www.sane-project.org/sane-mfgs.html'
 say 'source3=http://siv.mysite.wanadoo-members.co.uk/downloads/usbdevs.txt'
 say 'source4=http://www.qbik.ch/usb/devices/devices.php'
 say 'source5=http://ecomstation.ru/ecosoft'
 DO FOREVER
  IF LINES(INP1) = 0 THEN LEAVE
  IZEILE = LINEIN(INP1)
  if datatype(left(izeile,4),'X') then,
   do
    parse var izeile ccode company
    say
    say '['ccode']'
    say 'company=' || strip(company)
   end
  if left(izeile,1) = '09'x,
   & datatype(substr(izeile,2,4),'X') then,
   do
    idcode = substr(IZEILE,2,4)
    idtext = strip(substr(IZEILE,6))
    say ccode':'idcode'='idtext
   end
 END
 say
 say '[end of file]'

return
Läuft hier unter PMREXX mit anschliessender Speicherung der Console als USBDOCK.DAT.
Wer Lust hat kann das auf LINEOUT umbauen.
erdmann
Beiträge: 594
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

Ich werds bei Gelegenheit mal ausprobieren.
Trotzdem mache ich jetzt mal schamlos Werbung für mein "OS2 HW Manager" update:

http://hobbes.nmsu.edu/h-search.php?key ... ton=Search

Das nämlich nutzt ebenfalls die USB.IDS Datei um die ganzen eingestöpselten USB Devices mit sprechenden Hersteller- und Produktnamen anzuzeigen. Das Schöne daran: jedes Mal wenn es eine upgedatete USB.IDS gibt, gibt es auch automatisch eine upgedatete Anzeige :-)


Lars
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

erdmann hat geschrieben:Ich werds bei Gelegenheit mal ausprobieren.
Trotzdem mache ich jetzt mal schamlos Werbung für mein "OS2 HW Manager" update:

http://hobbes.nmsu.edu/h-search.php?key ... ton=Search

Das nämlich nutzt ebenfalls die USB.IDS Datei um die ganzen eingestöpselten USB Devices mit sprechenden Hersteller- und Produktnamen anzuzeigen. Das Schöne daran: jedes Mal wenn es eine upgedatete USB.IDS gibt, gibt es auch automatisch eine upgedatete Anzeige :-)
Die Sache hat leider einen kleinen Haken (oder Schönheitsfehler). Sollte das USB-Gerät bereits während des Startvorgangs eingesteckt sein, wird lediglich "USB Device_..." angezeigt. Auch das Entfernen und Wiedereinstecken (unabhängig von der physischen Anschlußbuchse) bringt dann nicht die Anzeige aus der USB.IDS sondern einen zusätzlichen gleichartigen Eintrag siehe Abbildung.

Bitte nicht als Nörgelei auffassen. Ich finde es sehr gut, daß sinnvollerweise DPATH genutzt wird.
Dateianhänge
hwman-usb.gif
hwman-usb.gif (9.97 KiB) 2108 mal betrachtet
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Einspruch euer Ehren, hier funktioniert es auch mit von Beginn an eingestöpselten USB-Geräten.
USB_IDS.jpg
erdmann
Beiträge: 594
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

ak120 hat geschrieben:
erdmann hat geschrieben:Ich werds bei Gelegenheit mal ausprobieren.
Trotzdem mache ich jetzt mal schamlos Werbung für mein "OS2 HW Manager" update:

http://hobbes.nmsu.edu/h-search.php?key ... ton=Search

Das nämlich nutzt ebenfalls die USB.IDS Datei um die ganzen eingestöpselten USB Devices mit sprechenden Hersteller- und Produktnamen anzuzeigen. Das Schöne daran: jedes Mal wenn es eine upgedatete USB.IDS gibt, gibt es auch automatisch eine upgedatete Anzeige :-)
Die Sache hat leider einen kleinen Haken (oder Schönheitsfehler). Sollte das USB-Gerät bereits während des Startvorgangs eingesteckt sein, wird lediglich "USB Device_..." angezeigt. Auch das Entfernen und Wiedereinstecken (unabhängig von der physischen Anschlußbuchse) bringt dann nicht die Anzeige aus der USB.IDS sondern einen zusätzlichen gleichartigen Eintrag siehe Abbildung.

Bitte nicht als Nörgelei auffassen. Ich finde es sehr gut, daß sinnvollerweise DPATH genutzt wird.
Das Problem hatte ich noch nie. Das sieht eher danach aus das irgendetwas bei der Installation schiefgegangen ist, die Ersatzklasse also nicht vernünftig installiert wurde. Oder das USBCALLS.DLL veraltet ist. Wenn USBCALLS.DLL nicht auf einem aktuellen Stand ist funktioniert auch meine Ersatzklasse nicht richtig. USBCALLS.DLL wird benötigt um ermitteln zu können welche USB devices eingesteckt sind.
Es wird übrigens nicht nur DPATH geprüft sondern auch ETC und PATH. Hab jetzt gerade vergessen in welcher Reihenfolge, ich glaube es war erst ETC, dann DPATH, dann PATH.

Ach, noch was: neben den USB devices wird auch die CPU Bezeichnung direkt mittels CPUID Befehl bestimmt und dann auch so angezeigt. In dem geposteten Screenshot ist davon nichts zu sehen. Das deutet ebenfalls darauf hin daß die Ersatzklasse gar nicht aktiv ist.
Zuletzt geändert von erdmann am Mi 26. Apr 2017, 23:47, insgesamt 2-mal geändert.
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

erdmann hat geschrieben:Das Problem hatte ich noch nie. Das sieht eher danach aus das irgendetwas bei der Installation schiefgegangen ist, die Ersatzklasse also nicht vernünftig installiert wurde.
Es mag sein, daß die Installation des WPI nicht vernünftig war. Leider war mir kein anderes Installationsverfahren bekannt. Das einzig Auffällige war eine merkwürdige Verzeichnisvorgabe für das Quellen-Unterpaket. Zum Abschluß wurde die WPS neu gestartet und die Geräte wurden im HW Manager mit Namen zuverlässig angezeigt. Nach dem Neustart dann leider nicht mehr.
Oder das USBCALLS.DLL veraltet ist. Wenn USBCALLS.DLL nicht auf einem aktuellen Stand ist funktioniert auch meine Ersatzklasse nicht richtig. USBCALLS.DLL wird benötigt um ermitteln zu können welche USB devices eingesteckt sind.
RPM hatte wohl vor einiger Zeit ein Paket libusbcalls installiert oder besser gesagt USBCALLS.DLL und USBRESMG.SYS (ohne Vorwarnung und Sicherung der Dateien gleichen Namens) einfach überschrieben. Nach der Wiederherstellung der Dateien (aus deinem USB-Treiberpaket) im \OS2\BOOT-Verzeichnis und einer erneuten Installation des HWMAN12.wpi funktioniert es jetzt auch nach mehreren Neustarts.
Es wird übrigens nicht nur DPATH geprüft sondern auch ETC und PATH. Hab jetzt gerade vergessen in welcher Reihenfolge, ich glaube es war erst ETC, dann DPATH, dann PATH.
Das steht ja zum Glück in der Datei datacls.cpp: ETC ... PATH ... DPATH
Ach, noch was: neben den USB devices wird auch die CPU Bezeichnung direkt mittels CPUID Befehl bestimmt und dann auch so angezeigt. In dem geposteten Screenshot ist davon nichts zu sehen. Das deutet ebenfalls darauf hin daß die Ersatzklasse gar nicht aktiv ist.
Ich hätte die Liste der aktiven geladenen Klassen prüfen müssen. Bin leider irrtümlich davon ausgegangen, daß nach dem Laden der Klasse nach dem Neuladen der WPS, dies auch nach einem Systemneustart so sein würde.
Ist es normal, daß bei der Bezeichnung für den Prozessor die führenden Leerzeichen nicht weggeschnitten werden?
erdmann
Beiträge: 594
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

1) das WPI funktioniert und ist hier nicht das Problem. Das Quellenpaket wird im TEMP (Environment Variable) Verzeichnis zur Installation angeboten, wo auch immer das hinzeigt. Dafür ist der Installationspfad ja auch editierbar gehalten :-)

2) ein altes USBCALLS.DLL ist leider immer ein Problem gegen daß ich auch nichts machen kann. Ältere und neuere Versionen sind nicht interface kompatibel.

3) "führende Leerzeichen nicht weggeschnitten": ja das ist nicht nur wahrscheinlich sondern ganz bestimmt so.
Der CPUID Befehl liefert mittels mehrerer Unterbefehle Zeichenketten in den Registern EAX,EBX,ECX,EDX (inklusive einer terminierenden NULL). Die werden einfach gnadenlos hintereinandergefügt und in keinster Weise formatiert.
Antworten