sispmctl port

sandreas

Well-Known Member
Hallo zusammen,

gibt es einen Port oder ein Package von sispmctl für OpenBSD? Ich hab zwar google bemüht aber nichts brauchbares gefunden...


Danke
 
Okay, dann gibts offensichtlich keinen Port dafür. Vielleicht kann mir ja jemand helfen einen Port zu erstellen. Eigentlich sollte es nicht so ein Akt sein, denn auf der Homepage: http://sispmctl.sourceforge.net/ steht, dass es normalerweise mit den meisten BSDs laufen sollte.

The software works on many different platforms. I would be glad to here from you, on what platforms you are using this software. Also, send me any Howto's etc on how you got it to work on your router box etc.

Ich hab eben mal versucht, es zu compilen, bin aber gescheitert:

http://www.pastebin.cz/19473

Da ich keine Erfahrung mit Erstellen von Ports habe, wäre ich für jede Hilfe dankbar:) Ansonsten fang ich heute mal an mich einzulesen und wenns läuft, poste ich es hier.
 
Habs grade hinbekommen, dass es schonmal kompiliert und installiert wurde. Ob es fehlerfrei läuft, weiß ich nicht genau, das teste ich mal. Sieht aber gut aus.

Folgendes hab ich gemacht:

1.) Paket "libusb" installiert
2.) Sourcecode runtergeladen und entpackt
3.) Kompiliert und Installiert mit:

CFLAGS=`libusb-config --cflags` ./configure --enable-webless
gmake
gmake install

Durch das --enable-webless tritt der Fehler mit einer network-libary nicht mehr auf und es kompiliert durch. Ich schau mir mal "Wie baue ich ports" an und frag mal nach obs gewünscht ist.
 
Aktuell wird die SIS-PM von sispmctl noch nicht erkannt, obwohl sie beim Aufruf von usbdevs angezeigt wird. Ich werde das mal weiter verfolgen.
 
Also nochmal zum Status des Ports: Das Programm scheint zwar zu funktionieren, allerdings wird das Gerät, also die GEMBIRD SiS-PM Steckdose als "hid" Gerät erkannt und nicht als "ugen".

[andreas@alixtwo]: /home/andreas# usbdevs -dv
...
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, OHCI root hub(0x0000), AMD(0x1022), rev 1.00
uhub1
port 1 addr 2: low speed, power 150 mA, config 1, Gembird Silver Shield PM(0xfd13), Gembird Electronics(0x04b4), rev 1.01
uhidev0

Dadurch erkennt das Programm das Gerät nicht und eine Steuerung ist nicht möglich. Demnach müsste für dieses Gerät wohl ein Kernel-Patch her, damit es "richtig" erkannt wird.
Es gibt in der OpenBSD-usb_quirks.c schon Einträge für SISPM-Devices, allerdings nicht für das besagte Gerät.

Ich werde mich jetzt mal daran versuchen, einen Kernel-Patch zu schreiben und einen Bug-Report zu senden. Da ich aber sehr wenig Erfahrung damit habe, wird das sicher einige Zeit dauern. Sollte also jemand mich dabei unterstützen wollen, oder eine Lösung ohne Kernel-Patch haben, kann er sich ja bei mir melden:)

Viele Grüße
 
Nabend zusammen,

ich habe mal ohne wirklich fundiertes Wissen im Kernel-Source "nachgeforscht" und festgestellt, dass mein Gerät mit der entsprechenden "DeviceID" nicht eingetragen war.

Das habe ich mal in der Datei "/usr/src/sys/dev/usb/usbdevs.h" nachgeholt:

...
#define USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW 0xfd13 /* Sispm - flash (new) */


Um das Problem entgültig zu beheben musste ich in die Datei "/usr/src/sys/dev/usb/usb_quirks.c" eine Zeile hinzufügen, damit das Gerät als ugen erkannt wird:


// USB_VENDOR_CYPRESS.....................=> hex-code für die vendorID
// USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW....=> siehe oben
// ANY....................................=> Alle "Versionen" des Geräts
// UQ_BAD_HID.............................=> konstante, wenn das gerät fälschlicherweise als HID erkannt wird

{ USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW, ANY, { UQ_BAD_HID }},


Danach habe ich den Kernel kompiliert, installiert und es ging... leider nur genau EIN MAL. Hab mit sispmctl die Steckdosen eingeschaltet, ausgeschaltet, danach war Ende.

Danach kam im dmesg immer die Meldung:

uhub1: port 1 reset failed
uhub1: port 1 reset failed
uhub1: port 1 reset failed
....


Das könnte aber auch an einem Defekten Gerät liegen, hatte mit meinem Laptop öfter schon Probleme mit den USB-Ports. Hatte den vor einiger Zeit mal unwirsch zerlegt und den Lüfter getauscht, seitdem ging ein USB-Port gar nicht mehr.

So long...
 
So, hab den Fehler gefunden. Hier meine Lösung:

Man muss den Kernel patchen, unten ist der Patch für Current als Text. Hier nochmal ein englischer Auszug meiner Mail an den Kernel-Developer:

CFLAGS=`libusb-config --cflags` ./configure --enable-webless
make
make install

After compiling that way it works nicely, BUT:
- If you use the toggle option with the parameter "all" the device is getting detached and a port reset fails.
Example: sispmctl -t all


ugen0 detached
uhub1: port 1 reset failed

Even replugging the usb-cable of the device does not help. The only solution i found was turning of the power switch (don't be surprised, the device is now producing noise, called "power alarm"), but it is found again. Then you have to turn all ports off with sispmctl (sispmctl -f all). After that turn on the power switch and it works again. I do not know wether it is an error of the device itself, the usb-port of my notebook, the sispmctl-software or the OpenBSD kernel. I would say, just keep hands off toggling all;)



Hier der Patch (Vorsicht damit, die Formatierung hat n paar Tabs gekillt, eher manuell anwenden):



Index: usb_quirks.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usb_quirks.c,v
retrieving revision 1.52
diff -r1.52 usb_quirks.c
158a159
> { USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW, ANY, { UQ_BAD_HID }},
Index: usbdevs
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.443
diff -r1.443 usbdevs
1145a1146
> product CYPRESS SISPM_FLASH_NEW 0xfd13 Sispm - flash (new)
Index: usbdevs.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.453
diff -r1.453 usbdevs.h
1144,1152c1144,1153
< #define USB_PRODUCT_CYPRESS_MOUSE 0x0001 /* mouse */
< #define USB_PRODUCT_CYPRESS_THERMO 0x0002 /* thermometer */
< #define USB_PRODUCT_CYPRESS_KBDHUB 0x0101 /* Keyboard/Hub */
< #define USB_PRODUCT_CYPRESS_FMRADIO 0x1002 /* FM Radio */
< #define USB_PRODUCT_CYPRESS_USBRS232 0x5500 /* RS232 */
< #define USB_PRODUCT_CYPRESS_HUB2 0x6560 /* USB2 Hub */
< #define USB_PRODUCT_CYPRESS_SISPM_OLD 0xfd10 /* Sispm - old version */
< #define USB_PRODUCT_CYPRESS_SISPM 0xfd11 /* Sispm */
< #define USB_PRODUCT_CYPRESS_SISPM_FLASH 0xfd12 /* Sispm - flash */
---
> #define USB_PRODUCT_CYPRESS_MOUSE 0x0001 /* mouse */
> #define USB_PRODUCT_CYPRESS_THERMO 0x0002 /* thermometer */
> #define USB_PRODUCT_CYPRESS_KBDHUB 0x0101 /* Keyboard/Hub */
> #define USB_PRODUCT_CYPRESS_FMRADIO 0x1002 /* FM Radio */
> #define USB_PRODUCT_CYPRESS_USBRS232 0x5500 /* RS232 */
> #define USB_PRODUCT_CYPRESS_HUB2 0x6560 /* USB2 Hub */
> #define USB_PRODUCT_CYPRESS_SISPM_OLD 0xfd10 /* Sispm - old version */
> #define USB_PRODUCT_CYPRESS_SISPM 0xfd11 /* Sispm */
> #define USB_PRODUCT_CYPRESS_SISPM_FLASH 0xfd12 /* Sispm - flash */
> #define USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW 0xfd13 /* Sispm - flash (new) */
Index: usbdevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.447
diff -r1.447 usbdevs_data.h
1548a1549,1552
> USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_SISPM_FLASH_NEW,
> "Sispm -flash (new)",
> },
> {
 
Zurück
Oben