UNIX libusb LIBUSB_ERROR_ACCESS



  • Hallo zusammen,

    meine Hoffnung liegt gerade in der Schwarmintelligenz 😃

    Ich versuche ein USB gerät zu öffnen, dessen VendorID und pID mir bekannt ist um die Daten anschließend zu Verarbeiten.
    Weil (wie ich das gelesen habe) libusb_open_device_with_vid_pid(...) keine guten Error werte gibt habe ich einen Umweg eingebaut.

    MEIN CODE:

    1. Ich erzeuge Erst eine Liste aller Devices und nehme mir das richtige Device heraus:
    int main() {
      libusb_context *context;
      libusb_device **list;
      size_t count = 0;
      libusb_device *found;
      const int vid = 1234;
    
      libusb_init(&context);
    
      count = libusb_get_device_list(context, &list);
      assert(count > 0);
    
      for (size_t idx = 0; idx < count; ++idx) {
        libusb_device *device = list[idx];
        libusb_device_descriptor desc;
    
        libusb_get_device_descriptor(device, &desc);
        if (desc.idVendor == vid) {
          found = device;
        }
      }
      libusb_free_device_list(list, count);
    
    1. anschließend erzeuge ich die Verbindung mit dem USB gerät über einen Handle:
      
      libusb_device_handle *devHanle;
    
      int isOpen = libusb_open(found, &devHanle);
      std::cout<<isOpen<<std::endl;
    
    1. danach will ich die Daten auslesen und erst ein mal nur ausgeben
      unsigned char data[2048];
      int actual_length;
      print(str(isOpen));
      libusb_bulk_transfer(devHanle, 2, data, sizeof(data), &actual_length, 500);
    
      std::cout<<data<<std::endl;
    

    Mein Problem
    an der 2. stelle ist 'isOpen' -3 ist... also 'libusb_open(...)' den folgen Error hat

    LIBUSB_ERROR_ACCESS if the user has insufficient permissions
    

    Die Frage:
    kann ich mir rechte geben ohne das irgendwo in einer Datei nieder zu schreiben?
    Das soll am ende ein portables Programm werden, das wenn möglich keine Änderungen in permanente Files schreibt und auch keine sudo rechte braucht.
    Wie bekomme ich das hin?

    Betriebssystem:
    Habe Ubuntu (22.04). soll am ende für Mac, Linux und Windows laufen.

    Liebe grüße und danke für die Antworten
    EvD


Anmelden zum Antworten