ubuntuusers.de

Für diese Funktion musst du eingeloggt sein.

lsusb gibt falsche Beschreibung aus

Status: Gelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

burli

Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Moin, ich spiele gerade mit der Programmiersprache F# und USB Geräten. Dabei ist mir etwas seltsames aufgefallen. Ich habe eine Sharkoon SKILLER SGK50 S4 Tastatur. Wenn ich lsusb ausführe erhalte ich folgende Ausgabe

Bus 003 Device 003: ID 0c45:8006 Microdia Dual Mode Camera (8006 VGA)

In F# habe ich mir eine Funktion geschrieben, die alle Geräte einer bestimmten Vendor ID ausgibt. Diese liefert (bisher)

  FoundDevices [{ DevicePath = "/sys/bus/usb/devices/3-2"
                  Description = "SKILLER SGK50 S4"
                  VendorID = "0c45"
                  ProductID = "8006" }]

Wie kann das sein, dass lsusb einen Tastatur als Kamera erkennt?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17524

Schau mal in die Datei usb.ids die es bei dir auf dem System gibt, die Ordnet Vendor und Device ID einem String zu.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

burli schrieb:

Wie kann das sein, dass lsusb einen Tastatur als Kamera erkennt?

Fehler in der Datenbank. Vermutlich nutzt F# einen anderen Mechanismus als lsusb, um von den IDs zu Namen zu kommen. Oder eine alte Version. Vielleicht mal aktualisieren.

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

In der usb.id steht die Tastatur so gar nicht drin. Meine Funktion holt die Informationen aus Sysfs.

Die aktuelle Version von linux-usb.org ändert daran nichts.

Mal sehen, was ich daraus mache.

Hier mal eine Version der Funktion, falls es jemanden interessiert (Schade das es kein F# Highlighting gibt)

open System.IO
open System

type DeviceInfo =
    { Manufacturer: string
      Description: string
      VendorID: string
      DeviceID: string }

let getDeviceInfoFromSysfs (devicePath: string) =
    let vendorIDPath = Path.Combine(devicePath, "idVendor")
    let deviceIDPath = Path.Combine(devicePath, "idProduct")
    let manufacturerPath = Path.Combine(devicePath, "manufacturer")
    let descriptionPath = Path.Combine(devicePath, "product")

    let readSysfsFile (path: string) =
        if File.Exists(path) then
            File.ReadAllText(path).Trim()
        else
            ""

    let vendorID = readSysfsFile vendorIDPath
    let deviceID = readSysfsFile deviceIDPath
    let manufacturer = readSysfsFile manufacturerPath
    let description = readSysfsFile descriptionPath

    if String.IsNullOrWhiteSpace(vendorID) then
        None
    else
        Some
            { Manufacturer = manufacturer
              Description = description
              VendorID = vendorID
              DeviceID = deviceID }

let getConnectedDevices () =
    let devicesPath = "/sys/bus/usb/devices/"
    let deviceDirectories = Directory.GetDirectories(devicesPath)

    let devices =
        deviceDirectories
        |> Seq.choose getDeviceInfoFromSysfs

    devices

let connectedDevices = getConnectedDevices ()

for device in connectedDevices do
    printfn
        "Manufacturer: %s, Description: %s, VendorID: %s, DeviceID: %s"
        device.Manufacturer
        device.Description
        device.VendorID
        device.DeviceID

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 882

In der usb.id steht die Tastatur so gar nicht drin.

Die aktuelle Version von linux-usb.org ändert daran nichts.

Was? Steht doch da. Auch in der hier lokal 2022.04.02.

http://www.linux-usb.org/usb.ids

0c45 Microdia 8006 Dual Mode Camera (8006 VGA)

https://www.reddit.com/r/linuxquestions/comments/111rkt3/my_keyboard_is_a_camera/

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Ja, ich habe eine Tastatur, die als Kamera angezeigt wird. Das ist bei mir im System so und in der aktuellen usb.id hat sich nichts geändert.

Ich weiß nicht, ob der Eintrag falsch ist oder ob da eine ID doppelt vergeben wurde oder was auch immer da nicht stimmt.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2177

Wohnort: dahoam

Meine persönliche Vermutung ist, dass der Eintrag in der usb.id DB falsch ist. Aber gem. des Links von Marantkurz oben ist das auch kein Problem, solange die USB Interface-Class korrekt ist (was sie wahrscheinlich ist). Was gibt denn dies aus:

lsusb -d 0c45:8006 -v | grep bInterfaceClass

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 882

Ja, ich habe eine Tastatur, die als Kamera angezeigt wird.

Dann so:

Wie hoch ist die Wahrscheinlichkeit, dass lediglich der Eintrag in der usb.ids falsch ist?

  • a) sehr gering

  • b) keine Ahnung

  • c) sehr hoch

Am Einfachsten, editiere die Lokale, wenn lsusb dbzgl. korrekt ausgeben soll.

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10418

Hallo burli

Was erkennt denn der Rechner?

hwinfo --usb| grep -i vendor

und

hwinfo --usb| grep -i keyboard

Schau mal was die hier schreiben: https://devicehunt.com/view/type/usb/vendor/1EA7/device/0907

Vllt mal eine Mail an linux.usb.ids@gmail.com schreiben.

SHARKOON Technologies GmbH hat die 1EA7

Ist die Firma überhaupt dabei?

hwinfo --usb| grep -i x1EA7

die Firma steht in der Datei usb.ids

1ea7  SHARKOON Technologies GmbH
	0030  Trust GXT 158 Orna Laser Gaming Mouse
	0064  2.4GHz Wireless rechargeable vertical mouse [More&Better]
	0066  [Mediatrack Edge Mini Keyboard]
	0907  Keyboard
	1002  Vintorez Gaming Mous
Antworten |