usb device per php exec() steuern (k8055, apache, php) | Fehlende Rechte?

Status
Für weitere Antworten geschlossen.

whitey

Benutzer
Mitglied seit
22. Jul 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Moin moin,

vorab, ein großes Lob an Synology wegen des Wikis, des Forums und der Hardware.
Meine DS110j ist von außerhalb nicht erreichbar, weswegen ich mir derzeit noch keine Gedanken über die Sicherheit meiner Experimente mache.

Ich möchte eine Experimentierplatine mit einem K8055 Chip über USB von einem Webserver aus steuern.

ipkg ist bereits installiert, die library ist kompiliert, und mit einem Befehl aus dem Verzeichnis heraus:
Rich (BBCode):
DiskStation> /root/src/k8055 -p:2 -d:1
53;0;100;107;0;0

ist das Gerät steuerbar.

Problem:
Der PHP Code

PHP:
$output = array(); 
exec('/root/src/k8055 -p:2 -d:1', $output); 
foreach($output as $lout) print nl2br($lout);

funktionierte erst, als ich

Rich (BBCode):
vi /usr/syno/etc/php/user-setting.ini

das verzeichnis
Rich (BBCode):
safe_mode_exec_dir = /usr/syno/bin

ausgetragen hatte.

Danach bekam ich folgende Fehlermeldung:
Rich (BBCode):
Could not open the k8055 (port:2)Please ensure that the device is correctly connected.

Was ja nicht sein sollte, denn in der Befehlszeile wird der Port2 wunderbar angesprochen.
Ich vermute es liegt an den fehlenden Rechten, ein USB device an zu sprechen ...

Weiß jemand rat?

yt
whitey
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Für den Test ist es am einfachsten, wenn man die per exec() aufgerufenen Programme direkt in das Web-Verzeichnis (da wo das php-Skript liegt) hineinkopiert und für jedermann les- und ausführbar macht (chmod 777 ...). Wenn dann auch noch bekannt ist, über welches Device zugegriffen wird, dann sollte man auch beim Device (/dev/....) die Rechte auf machen ... testhalber.

Itari
 

whitey

Benutzer
Mitglied seit
22. Jul 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Guten Abend Itari,

danke für deine prompte Antwort. Ich hab nun weiter experimentiert.

Folgendes ausgeführt:

Rich (BBCode):
cp /root/src/k8055 /Volume1/web/k8055
chmod 775 /Volume1/web/k8055

oder auch 777 brachte keinen Erfolg.

Rich (BBCode):
dmesg
liefert mir folgendes

Rich (BBCode):
[11090.950000] usb 1-1.1.4: new low speed USB device using orion-ehci and address 6
[11091.060000] usb 1-1.1.4: configuration #1 chosen from 1 choice
[11091.080000] Get empty minor:104
[11091.090000] generic-usb 0003:10CF:5502.0002: hiddev104: USB HID v1.00 Device [Velleman  USB K8055] on usb-orion-ehci.0-1.1.4/input0
[11091.150000] Got empty serial number. Generate serial number from product.

daraus werde ich leider nicht schlau, denn in

/dev und /dev/usb finde ich kein hiddev104

Bei Ubuntu/Debian gibt es ein Verzeichnis für die Regeln, in denen auch der Owner und Group gesetzt wird. Auf der Diskstation finde ich das bisher nicht (/etc/udev/rules.d) :(

Für heute aber - "gute Nacht", bis Morgen :)

yt
whitey
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Bei mir schreibst sich das "volume1" klein ... kontrolliere doch das doch bitte, sonst fallen wir eventuell auf Kleinigkeiten herein.

Itari
 

whitey

Benutzer
Mitglied seit
22. Jul 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Guten Morgen!

Jau, solche kleinen großschreib-Fehler können einem den Tag versauen :)
Ist richtig schreibt sich klein und wurde nur von mir falsch aus dem Gedächtnis zitiert. Ich habs kontrolliert.

Rich (BBCode):
-rwxrwxrwx    1 whitey   users        37362 Sep 24 17:16 k8055

Die Fehlermeldung des exec() deutet für mich sehr stark auf device Rechte hin.
Denn er muss den Befehl ja ausführen können, damit der Befehl selbst (und nicht das System) eine Fehlermeldung zurückgibt.

Das der Befehl die Rückmeldung gibt, sieht man daran dass er versucht das Gerät mit einer bestimmten Kennung (Port) anzusprechen.
Könnte er den Befehl nicht ausführen, würde er mekkern, den Befehl nicht zu finden.

Führe ich als root den Befehl aus, lässt sich das Gerät ansprechen, aus welchem Verzeichnis heraus ich den Befehl aufrufe.

So nu werde ich mal weiter herumexperimentieren ;)

yt
whitey
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Falls die Geschichte letztendlich an der REchten scheitern sollte, dann kannst ja auch probieren, dein Skript unter dem System-Apachen (denn der läuft unter 'root'-Berechtigung) laufen zu lassen (/usr/syno/synoman/phpsrc) und als Apps integrieren.

Itari
 

rennerund

Benutzer
Mitglied seit
05. Jan 2013
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
hallo,
hast du es geschafft das 8055er auf der synology anzusteuern?

lg
rene
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat