libusb_open - LIBUSB_ERROR_ACCESS
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Wenn es nicht mit der hwdb.bin klappt, kann man die JSON von der Seite https://sebastianlang.net/software/usb-ids-api/ nehmen.
Gruß Garfield
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Die Liste von Sebastian Lang ist kürzer als die von lsusb. lsusb kennt meine laptopinterne Kamera,
- Dateianhänge
-
USB-IDs.zip- (388.17 KiB) 335-mal heruntergeladen
-
- Bildschirmfoto vom 2025-11-17 15-02-55.png (18.53 KiB) 840 mal betrachtet
-
- Bildschirmfoto vom 2025-11-17 14-59-48.png (18.27 KiB) 840 mal betrachtet
Gruß Garfield
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Damit schliesse ich mit dem Thema vorerst ab.
- Dateianhänge
-
LibUsb.zip- (361.36 KiB) 124-mal heruntergeladen
-
- Bildschirmfoto vom 2025-11-19 21-11-52.png (40.67 KiB) 739 mal betrachtet
Gruß Garfield
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Irgendwie lässt es mich doch nicht in Ruhe. Auf https://github.com/hansiglaser/pas-libu ... libusb-1.0 gibt es ein paar Consolentestprogramme, von denen bei mir nur eines funktioniert:
Das GUI-Example funktioniert auch:.../pas-libusb-libusb-1.0/src/examples$ ./test1library
Using libusb(x) v1.0.27.11882
Found 4 devices:
Bus 2 Device 1: ID 1D6B:0003, port: 0, Speed: unknown (5)
Bus 1 Device 2: ID 04F2:B685, port: 8, port path from HCD: 0, Speed: 480 Mbit/s (USB HighSpeed)
Bus 1 Device 3: ID 8087:0029, port: 14, port path from HCD: 0, Speed: 12 Mbit/s (USB FullSpeed)
Bus 1 Device 1: ID 1D6B:0002, port: 0, Speed: 480 Mbit/s (USB HighSpeed)
- Dateianhänge
-
- Bildschirmfoto vom 2025-11-25 08-44-58.png (46.84 KiB) 628 mal betrachtet
Gruß Garfield
- AlterPascaler
- Beiträge: 95
- Registriert: Mo 26. Jun 2023, 18:56
- OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
- CPU-Target: xxBit
- Wohnort: Deutschland, NRW
Re: libusb_open - LIBUSB_ERROR_ACCESS
Hallo,
vor langer Zeit habe ich mich auch mit LibUsb unter Linux beschäftigt. Damit du auf dein Usb Device im User Mode zugreifen kannst, kannst du eine UDEV Rule anlegen.
Hier https://gitlab.com/FpTuxe/tblibusb findest du den Link zu meiner Lib. Unter "examples" findest du zwei Beispiele die Mouse Events anzeigen. Aber Achtung! Verwende dafür eine zweite Mouse, damit du dein LapTop noch bedienen kannst.
Die Lib habe ich bist Heute noch im Einsatz.
Aber ich muss dich warnen, USB ist viel komplizierten für den Anwender als Netzwerk oder RS232. Mal schnell ist nicht!
Was hast du den vor?
VG
AlterPascaler
vor langer Zeit habe ich mich auch mit LibUsb unter Linux beschäftigt. Damit du auf dein Usb Device im User Mode zugreifen kannst, kannst du eine UDEV Rule anlegen.
Hier https://gitlab.com/FpTuxe/tblibusb findest du den Link zu meiner Lib. Unter "examples" findest du zwei Beispiele die Mouse Events anzeigen. Aber Achtung! Verwende dafür eine zweite Mouse, damit du dein LapTop noch bedienen kannst.
Die Lib habe ich bist Heute noch im Einsatz.
Aber ich muss dich warnen, USB ist viel komplizierten für den Anwender als Netzwerk oder RS232. Mal schnell ist nicht!
Was hast du den vor?
VG
AlterPascaler
Viele Grüße
AlterPascaler
AlterPascaler
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Vielen Dank.
Im Moment möchte ich auf das An- und Abstecken eines USB-Scanners reagieren und den Scanner erkennen.
Im Moment möchte ich auf das An- und Abstecken eines USB-Scanners reagieren und den Scanner erkennen.
Gruß Garfield
- AlterPascaler
- Beiträge: 95
- Registriert: Mo 26. Jun 2023, 18:56
- OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
- CPU-Target: xxBit
- Wohnort: Deutschland, NRW
Re: libusb_open - LIBUSB_ERROR_ACCESS
Musst du das über Lazarus erkennen, oder würde es auch über das Betriebssystem gehen?
Ich denke dabei an udev action
Gruß
AP
Ich denke dabei an udev action
Gruß
AP
Viele Grüße
AlterPascaler
AlterPascaler
-
Mathias
- Beiträge: 7138
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: libusb_open - LIBUSB_ERROR_ACCESS
Kannst du nicht in einem Timer ein libusb_handle_events_timeout_completed einbauen ?Garfield hat geschrieben: Fr 28. Nov 2025, 23:20 Vielen Dank.
Im Moment möchte ich auf das An- und Abstecken eines USB-Scanners reagieren und den Scanner erkennen.
Oder schau mal hier nach, was es sonst noch gibt: https://libusb.sourceforge.io/api-1.0/l ... async.html
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Das Grundproblem ist das: Sane - Scannerliste aktualisieren. Die LibSane bekommt es scheinbar nicht mit, wenn sich die Scannerliste ändert. Hier ging es erstmal darum, die Geräte zu erkennen. Scheint aber nicht ganz der richtige Weg zu sein. In die libudev hab ich auch reingesehen, aber da finde ich mich nicht durch.AlterPascaler hat geschrieben: Sa 29. Nov 2025, 18:27 Musst du das über Lazarus erkennen, oder würde es auch über das Betriebssystem gehen?
Ich denke dabei an udev action
Irgendwie dachte ich, dass es mit Device hotplug event notification gehen sollte.Mathias hat geschrieben: So 30. Nov 2025, 08:50Kannst du nicht in einem Timer ein libusb_handle_events_timeout_completed einbauen ?
Jetzt musste ich erstmal feststellen, dass mein Programm nicht richtig funktioniert.
- Dateianhänge
-
- Bildschirmfoto vom 2025-11-30 13-02-23.png (67.62 KiB) 397 mal betrachtet
Gruß Garfield
-
Mathias
- Beiträge: 7138
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: libusb_open - LIBUSB_ERROR_ACCESS
Ich wollte einen Versuch mit sane_get_devices in einem Timer starten, nur habe ich festgestellt, das der Scann etwa 5s braucht, dies würde das Programm voll blockieren.
Meine Idee, mache doch einen Optionen Dialog, bei dem mit sane_get_devices eine neue Liste eingelesen werden kann, und anschliessend kann der User einen Scanner aussuchen.
Meine Idee, mache doch einen Optionen Dialog, bei dem mit sane_get_devices eine neue Liste eingelesen werden kann, und anschliessend kann der User einen Scanner aussuchen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- AlterPascaler
- Beiträge: 95
- Registriert: Mo 26. Jun 2023, 18:56
- OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
- CPU-Target: xxBit
- Wohnort: Deutschland, NRW
Re: libusb_open - LIBUSB_ERROR_ACCESS
Ich habe da schon mal mit gearbeitet. Ich suche die morgen den Code- Schnipsel raus.Irgendwie dachte ich, dass es mit Device hotplug event notification gehen sollte.
Mal schauen wie meine Ordnung auf der Platte ist
Gruß
AP
Viele Grüße
AlterPascaler
AlterPascaler
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Ich habe gefunden, warum der Scanner nicht angezeigt wird. Das Programm bekommt das Handle zum Scanner ohne root-Rechte und ich habe idProdukt anstelle iProdukt zum Holen des Strings genommen. Für den Scanner braucht man die usb-ids.json nicht.
Da blockiert einiges. Wenn ich mich richtig erinner muss man den Scanvorgang in einem Thread nehmen damit man ihn abbrechen kann.Mathias hat geschrieben: So 30. Nov 2025, 13:48 Ich wollte einen Versuch mit sane_get_devices in einem Timer starten, nur habe ich festgestellt, das der Scann etwa 5s braucht, dies würde das Programm voll blockieren.
Das wäre nett. Es wäre natürlich schöner, wenn das in der libsane drin wäre. Von wegen "der ausgewählteScanner ist nicht mehr verfügbar."AlterPascaler hat geschrieben: So 30. Nov 2025, 13:50Ich habe da schon mal mit gearbeitet. Ich suche die morgen den Code- Schnipsel raus.
Windows hat mir meine "Ordnung" vor fünf Jahren zerstört. Wenn die guten Dateien durch korrupte neuere überschrieben werden, nützt das beste Backup nichts.AlterPascaler hat geschrieben: So 30. Nov 2025, 13:50Mal schauen wie meine Ordnung auf der Platte ist![]()
- Dateianhänge
-
LibUsb.zip- (362.97 KiB) 300-mal heruntergeladen
-
- Bildschirmfoto vom 2025-11-30 14-44-34.png (90.8 KiB) 387 mal betrachtet
Gruß Garfield
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Ich habe keine neue udev-rule angelegt.
Mit der udev-rule kommt das:
Das einzige was falsch ist, ist das da Printer steht obwohl es Scanner ist.
Code: Alles auswählen
Nov 30 19:54:55 fran kernel: usb 1-6: new high-speed USB device number 11 using xhci_hcd
Nov 30 19:54:56 fran kernel: usb 1-6: New USB device found, idVendor=04a9, idProduct=1912, bcdDevice= 1.00
Nov 30 19:54:56 fran kernel: usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 30 19:54:56 fran kernel: usb 1-6: Product: LiDE 400
Nov 30 19:54:56 fran kernel: usb 1-6: Manufacturer: Canon
Nov 30 19:54:56 fran kernel: usb 1-6: SerialNumber: 4AB6E1
Nov 30 19:54:56 fran systemd[3313]: Reached target printer.target - Printer.
Nov 30 19:54:56 fran systemd[1]: Reached target printer.target - Printer Support.
Nov 30 19:54:56 fran systemd[1]: Started ipp-usb.service - Daemon for IPP over USB printer supportCode: Alles auswählen
Nov 30 20:01:41 fran kernel: usb 1-6: new high-speed USB device number 12 using xhci_hcd
Nov 30 20:01:41 fran kernel: usb 1-6: New USB device found, idVendor=04a9, idProduct=1912, bcdDevice= 1.00
Nov 30 20:01:41 fran kernel: usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 30 20:01:41 fran kernel: usb 1-6: Product: LiDE 400
Nov 30 20:01:41 fran kernel: usb 1-6: Manufacturer: Canon
Nov 30 20:01:41 fran kernel: usb 1-6: SerialNumber: 4AB6E1
Nov 30 20:01:41 fran root[3303947]: UsbTest
Nov 30 20:01:41 fran systemd[3313]: Reached target printer.target - Printer.
Nov 30 20:01:41 fran systemd[1]: Reached target printer.target - Printer Support.
Nov 30 20:01:41 fran root[3303960]: UsbTest
Nov 30 20:01:41 fran root[3303962]: UsbTest
Nov 30 20:01:41 fran root[3303963]: UsbTest
Nov 30 20:01:41 fran systemd[1]: Started ipp-usb.service - Daemon for IPP over USB printer support.
Nov 30 20:01:41 fran root[3303967]: UsbTest
Gruß Garfield
- Garfield
- Beiträge: 225
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: libusb_open - LIBUSB_ERROR_ACCESS
Irgendwas habe ich falsch gemacht. Hatte mir gestern und vorgestern die ShowMouseEvents angesehen und ausgeführt. Anschliessend hatte ich zwei var/log/syslog-Dateien mit zusammen über 150 GB. 
Gruß Garfield
- AlterPascaler
- Beiträge: 95
- Registriert: Mo 26. Jun 2023, 18:56
- OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
- CPU-Target: xxBit
- Wohnort: Deutschland, NRW
Re: libusb_open - LIBUSB_ERROR_ACCESS
Hast du das mit der https://gitlab.com/FpTuxe/tblibusb gemacht?Irgendwas habe ich falsch gemacht. ...
Hast du eine UDEV Rule Datei angelegt? Wenn nein dann geht das nur mit sudo.
Für USB- Hotplug habe ich dir eine kleine Klasse geschrieben. Unter "examples/sync/hotplug/" findest du die Beispielte.
Die Programme laufen im User- Space. Für Hotplug und DeviceDescriptoren brauchst du unter Linux kein sudo.
Damit das funktioniert, mußt du dir die https://gitlab.com/FpTuxe/tblibusb nochmal runterladen, ich habe sie gerade aktualisiert.
Hier ein Beispiel.
Du mußt nur die "MY_VID_DEVICE" und "MY_PID_DEVICE" mit deine ScannerIds austauschen.
Code: Alles auswählen
program UsbHotplugEasy;
{
File: UsbHotplugEasy.lpr
CreateDate: 01.12.2025
ModifyDate: 01.12.2025
Version: 0.1.0.0
Author: Thomas Bulla
See the file COPYING.TXT, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
For more info to LibUsb see https://libusb.info/
}
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes,
crt,
sysutils,
tb_usb1_0_base, tb_usb_hotplug
{ you can add units after this };
type
{ THotplugMessage }
THotplugMessage = class
procedure PluggedLcl(Sender: TObject; Vid, PId: Word);
procedure UnpluggedLcl(Sender: TObject; Vid, PId: Word);
end;
const
{$HINT Please adjust these values!!}
MY_VID_DEVICE = $17EF;
MY_PID_DEVICE = $608D;
var
UsbIf: IbUsb1_0Base;
Hotplug: TbUsbHotplug;
Message: THotplugMessage;
{ THotplugMessage }
procedure THotplugMessage.PluggedLcl(Sender: TObject; VId, PId: Word);
begin
WriteLn(Format('Plugged, VID=%.04X, PID=%.04X', [VId, PId]));
end;
procedure THotplugMessage.UnpluggedLcl(Sender: TObject; VId, PId: Word);
begin
WriteLn(Format('Unlugged, VID=%.04X, PID=%.04X', [VId, PId]));
end;
procedure Init;
begin
Message:= THotplugMessage.Create;
UsbIf:= TIbUsb1_0Base.Create;
Hotplug:= TbUsbHotplug.Create(UsbIf);
Hotplug.OnPluggedLcl:= @Message.PluggedLcl;
Hotplug.OnUnpluggedLcl:= @Message.UnpluggedLcl;
Hotplug.Register(MY_VID_DEVICE, MY_PID_DEVICE);
end;
procedure Fin;
begin
Hotplug.Free;
Message.Free;
end;
begin
try
Init;
WriteLn('Please press any key to exit');
while not KeyPressed do begin
CheckSynchronize;
sleep(50);
end;
finally
Fin;
end;
WriteLn('Bye');
end.
Gedacht habe ich mir, das du zuerst wartest bis das Hotplug- Event vom Scanner kommt, und dann die Scanner Lib initialisierst.
Grüße
AP
Viele Grüße
AlterPascaler
AlterPascaler