[CUSTOM KERNEL] USB Support

kpj

NGBler
Registriert
27 Juli 2014
Beiträge
98
Hi,
ich nutze momentan einen Custom Kernel (konnte die '.config' leider nicht als Anhang verpacken, da es anscheinend eine "ungültige Datei" ist [und zu groß zum hier reinpasten oder pastebin nutzen]...).
Nun wollte ich auch meine USB Anschlüsse per udev und externe Monitore nutzen.
Leider scheint zB xrandr nicht zu funktionieren:
[src=bash]
$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1440 x 900, current 1440 x 900, maximum 1440 x 900
default connected 1440x900+0+0 0mm x 0mm
1440x900 0.00*
[/src]
(dies wird sowohl nach, als auch vor Anschluss eines externen Monitors angezeigt).

USB will auch nicht, da nach einstecken eines USB devices nur folgendes in dmesg erscheint:
[src=bash]
usb 1-1: new high-speed USB device number 5 using ehci-pci
[/src]
Keinerlei Zuweisung zu einen block device in /dev.
Soweit wie möglich scheint meine .config auch der Beschreibung ähnlich zu sein.
Hier noch mehr Infos:
[src=bash]
$ lsmod | grep usb
btusb 19976 0
bluetooth 373114 2 btusb
usbhid 41250 0
hid 92412 4 hid_generic,usbhid,hid_appleir,hid_apple
usbcore 189108 8 btusb,uvcvideo,ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,usbhid,bcm5974
usb_common 1712 1 usbcore
[/src]

Hat jemand von euch eine Idee, was ich falsch machen könnte?
Vielen dank für jegliche Hilfe,
kpj
 
Ohne die kernel config dürfte hilfe schwer werden, du müsstest die komprimiert aber problemlos hochladen können.


Usb sticks gehen nicht weil dir wies scheint das modul 'usb-storage' fehlt, dafür musst du auf jeden Fall 'USB_STORAGE' aktivieren
 
Auf meinem Notebook hab ich folgende Config:

Code:
Expand Collapse Copy
 zgrep -i usb /proc/config.gz | grep -v "#"
CONFIG_BT_HCIBTUSB=m
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_HID=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_DEFAULT_PERSIST=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_PCI=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=y
CONFIG_USB_STORAGE=y
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_WWAN=m
CONFIG_USB_SERIAL_OPTION=m

Was die einzelnen Optionen bedeuten, musst du selbst mal nachlesen.

Je nach Chipsatz kann es auch sein, dass du UHCI statt EHCI als USB-2.0-Treiber brauchst.
 
  • Thread Starter Thread Starter
  • #4
Ohne die kernel config dürfte hilfe schwer werden, du müsstest die komprimiert aber problemlos hochladen können.
Stimmt, hier ist sie: Anhang anzeigen config.tar.gz

Usb sticks gehen nicht weil dir wies scheint das modul 'usb-storage' fehlt, dafür musst du auf jeden Fall 'USB_STORAGE' aktivieren
[src=bash]$ modprobe usb-storage
modprobe: FATAL: Module usb-storage not found.[/src]
Dies sollte aber eigentlich nicht der Fall sein, hier ein Auszug:
[src=bash]$ grep '^[^#].*USB' .config
CONFIG_SND_USB=y
CONFIG_USB_HID=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_DEBUG=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEFAULT_PERSIST=y
CONFIG_USB_MON=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_PCI=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_PRINTER=y
CONFIG_USB_STORAGE=y[/src]

Je nach Chipsatz kann es auch sein, dass du UHCI statt EHCI als USB-2.0-Treiber brauchst.
Es scheint ja so, als würde ich beides haben. Unsere configs scheinen aber leicht unterschiedlich zu sein. Meinst du, dass ich einfach mal deine ausprobieren sollte?
 
Zuletzt bearbeitet:
Die von dir gepostete config past nicht zum lsmod output ausm ersten post, denn dort ist ersichtlich das USB support als modul nachgeladen wurde, laut config wird er aber fest rein kompiliert.

Also irgendwas stimmt da nicht.

schau mal ob die datei "/proc/config.gz" existiert, wenn nicht kann sie, wenn vorhanden, aus dem modul "configs" nachgeladen werden.
Dort ist die config des aktuell laufenden kernels zu finden, dass muss aber aktiviert in der config aktiviert sein.
 
  • Thread Starter Thread Starter
  • #6
Ups, sorry.
Hier ist /proc/config.gz: Anhang anzeigen config.tar.gz
Dann hätte ich auch:
[src=bash]$ zgrep '^[^#].*USB' /proc/config.gz
CONFIG_BT_HCIBTUSB=m
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_SND_USB=y
CONFIG_USB_HID=m
CONFIG_USB_HIDDEV=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=m
CONFIG_USB_DEFAULT_PERSIST=y
CONFIG_USB_DYNAMIC_MINORS=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_WHITELIST=y
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_PCI=m
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_OHCI_HCD_PCI=m
CONFIG_USB_PHY=y
CONFIG_USB_ISP1301=m
CONFIG_USB_GADGET=m
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2[/src]

Soll ich vll einfach nochmal mit der anderen config neubauen?


edit: Habe das nun getan und es tatsächlich geschafft USB Sticks nutzen zu können (musste tatsächlich nur 'USB_STORAGE=y' hinzufügen).
Soll ich für das Erkennen von externen Monitoren einen extra Thread machen, oder passt das hier noch mit rein?
 
Zuletzt bearbeitet:
Ähm, wie hast du das usb_storage "hinzugefügt"?

Normalerweise ist der normale Ablauf, um den Kernel zu konfigurieren:
Code:
Expand Collapse Copy
cd /usr/src/linux
make xconfig
  • xconfig: qt-Oberfläche
  • nconfig: ncurses
  • menuconfig: ncurses (alt)
Und /usr/src/linux sollte ein Symlink auf /usr/src/irgendwas-kernel-3.1x.xx sein. Wie das Verzeichnis genau heißt, hängt von Deiner verwendeten Distribution ab.


 
  • Thread Starter Thread Starter
  • #8
Ich habe mir den vanilla Kernel runtergeladen und habe dann erstmal `make menuconfig` ausgeführt und direkt nach '.config' gespeichert.
Danach habe ich '.config' direkt editiert und nach 'USB_STORAGE' gesucht.
Dann habe ich 'CONFIG_USB_STORAGE=y' in dem Bereich eingefügt. Wird die Konfiguration beim Kompilieren verändert? Jetzt steht da nämlich 'CONFIG_USB_STORAGE=m'.

Ist nconfig menuconfig zu bevorzugen?
 

Welches interface du benutzt ist im Endeffekt egal, daher nimm das mit dem du am besten klarkommts.
Direkt editieren ist sone Sache weil dann eventuell Abhängigkeiten nicht mit kompiliert werden, oder wie in deinem fall, der usbcore wird als modul kompiliert aber usb_storage direkt rein, das hat in diesem fall zwar funktioniert, sollte aber nicht sein.
Außerdem ist mir an der config aufgefallen, dass sie für die version 3.15.0-rc8 erstellt wurde, die ist ein paar Monate alt …

Zur display Problematik:
Du hast keinen einzigen grafik treiber aktiviert in der config.
Im menü
Code:
Expand Collapse Copy
-> Device Drivers  
   -> Graphics support
      -> Direct Rendering Manager
hast du die vorhandenen kernel treiber aufgelistet, dort entsprechend deiner Grafikkarte einen Treiber auswählen.
Zusätzlich muss aber noch der userspace Treiber installiert werden, z.B. xf86-video-nouveau für nvidia, xf86-video-intel für intel
 
  • Thread Starter Thread Starter
  • #10
Hm, ich habe jetzt nochmal meine alte config komplett gelöscht und habe per menuconfig in dem von dir erwähnten Submenü die Option 'Nouveau (nVidia) cards' aktiviert. Dazu werde ich dann 'xf86-video-nouveau' installieren und schauen, wie es läuft.

Gibt es tendenziell eine Möglichkeit den externen Bildschirm ohne Graka zu nutzen? Ich baue mir nämlich gerade auch aus dem Grund einen neuen Kernel, weil meine Graka vermutlich abgeraucht ist (siehe hier). Wenn ich nun das ganze wieder aktiviere könnte es sein, das mein Laptop einfach wieder anfängt abzustürzen.

Btw, 'CONFIG_USB_STORAGE=y' stand dieses mal direkt in der config. Scheint so, als wäre ich am Anfang einfach nur durcheinander gekommen.
 
anstatt einen eigenen Kernel zu kompilieren hättest du testweise das noveau modul blacklisten können.

Wenn nur die eine graka drin ist sehe ich schwarz, wenn dein notebook, ist doch ein oder? noch ein IGP im Prozessor hat hast du darüber eventuell Chancen.

daher wären die daten des gerätes mal ganz nett :)
 
  • Thread Starter Thread Starter
  • #12
Ich habe nen MacBookPro 5,1 mit einer NVIDIA GeForce 9600M GT. Noveau-Treiber habe ich noch nie genutzt, weil die immer zum sofortigem Absturz (beim Booten) geführt hatten. Habe daher immer die nvidia Treiber genommen.

Laut Seite hat mein MacBook noch eine NVIDIA GeForce 9400M, ich bin mir aber nicht sicher, ob ich die jemals aktiv genutzt habe...


edit: Habe versucht mit aktiviertem Nouveau Treiber zu booten. Nach Laden des initrd stürzt mein Laptop ab und bunte Streifen erscheinen auf dem Bildschirm. Das ist eher suboptimal, oder? :p
 
Zuletzt bearbeitet:
Wäh? o.O
n notebook mit 2 dedizierten krakas, wovon die eine sich ram von der cpu leiht?
wtf…

ich hab keine Ahnung, ob und wenn ja wie man auswählen kann, welche man verwenden will, geschweige denn welche auf die Bildschirmports zu greifen können.
Da müsstest du dich eventuell mal selber schlau machen.
 
  • Thread Starter Thread Starter
  • #14
Ich bin mir nicht so sicher, ob das tatsächlich so stimmt:
[src=bash]$ lspci
00:00.0 Host bridge: NVIDIA Corporation MCP79 Host Bridge (rev b1)
00:00.1 RAM memory: NVIDIA Corporation MCP79 Memory Controller (rev b1)
00:03.0 ISA bridge: NVIDIA Corporation MCP79 LPC Bridge (rev b3)
00:03.1 RAM memory: NVIDIA Corporation MCP79 Memory Controller (rev b1)
00:03.2 SMBus: NVIDIA Corporation MCP79 SMBus (rev b1)
00:03.3 RAM memory: NVIDIA Corporation MCP79 Memory Controller (rev b1)
00:03.4 RAM memory: NVIDIA Corporation MCP79 Memory Controller (rev b1)
00:03.5 Co-processor: NVIDIA Corporation MCP79 Co-processor (rev b1)
00:04.0 USB controller: NVIDIA Corporation MCP79 OHCI USB 1.1 Controller (rev b1)
00:04.1 USB controller: NVIDIA Corporation MCP79 EHCI USB 2.0 Controller (rev b1)
00:06.0 USB controller: NVIDIA Corporation MCP79 OHCI USB 1.1 Controller (rev b1)
00:06.1 USB controller: NVIDIA Corporation MCP79 EHCI USB 2.0 Controller (rev b1)
00:08.0 Audio device: NVIDIA Corporation MCP79 High Definition Audio (rev b1)
00:09.0 PCI bridge: NVIDIA Corporation MCP79 PCI Bridge (rev b1)
00:0a.0 Ethernet controller: NVIDIA Corporation MCP79 Ethernet (rev b1)
00:0b.0 IDE interface: NVIDIA Corporation MCP79 SATA Controller (rev b1)
00:0c.0 PCI bridge: NVIDIA Corporation MCP79 PCI Express Bridge (rev b1)
00:15.0 PCI bridge: NVIDIA Corporation MCP79 PCI Express Bridge (rev b1)
00:16.0 PCI bridge: NVIDIA Corporation MCP79 PCI Express Bridge (rev b1)
00:17.0 PCI bridge: NVIDIA Corporation MCP79 PCI Express Bridge (rev b1)
02:00.0 VGA compatible controller: NVIDIA Corporation G96M [GeForce 9600M GT] (rev a1)
04:00.0 Network controller: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)
05:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 07)[/src]

Ich sehe da nur
[src=bash]02:00.0 VGA compatible controller: NVIDIA Corporation G96M [GeForce 9600M GT] (rev a1)[/src]

Und wieso brauche ich ne extra Graka um auf einen externen Monitor zugreifen zu können? Der interne geht doch auch ohne...
 
Auch für den internen brauchst du eine graka, es besteht die Möglichkeit das, sollten wirklich zwei grakas in dem ding sein, was laut lspci nicht der fall zu sein scheint, nur eine mit dem DisplayPort verbunden ist, und wenn die aktuell nicht angesteuert wird, aus welchem Grund auch immer, werden Bildschirme daran eben nicht erkannt.
Poste mal bitte deinen Xorg log.
 
  • Thread Starter Thread Starter
  • #16
Wenn auch der interne Monitor eine Graka braucht, dann macht es aber keinen Sinn, das externe Monitore nicht gehen, wenn interne Monitore funktionieren (zumindest von der Graka aus), oder?

Hier meine Xorg.0.log:
 
mangels besserem Treiber hat Xorg einen fallback auf den VESA treiber gemacht, der bietet für die meisten grakas basis Unterstützung, aber nicht mehr also keine 2D oder 3D Beschleunigung, außerdem scheint er nicht in der lage zu sein den DisplayPort anzusteuern.

Da nouveau bei dir nicht läuft, hast du nur die Möglichkeit den proprietären Treiber zu nutzen, da du einen custom kernel nutzt, die gründe dafür erschließen sich mir übrigens nach wie vor nicht wirklich, musst du das nvidia kernel modul für deinen kernel kompilieren, das erklärt den Vorgang recht gut.
 
  • Thread Starter Thread Starter
  • #18
Oh, ich nutze einen Custom Kernel, weil mein normaler Kernel aus irgendwelchen mir nicht erfindlichen Gründen ständig abstürzt, siehe: https://ngb.to/threads/10613-Archlinux-Grafikprobleme-nach-Kernel-Update.

Ich habe dann gemerkt, dass mein selbstgebauter Kernel diese Abstürze nicht hat. Da diesem aber einige Sachen fehlten (zB USB) wollte ich diesen nun soweit Aufrüsten wie es geht (und eben keine Abstürze auftreten).
Der andere Thread ließ vermuten, dass meine Graka kaputt ist, was dann irgendwann zu diesen Ausfällen führte. Daher glaube ich auch, dass es nicht die optimale Lösung ist, die propri NVIDIA Treiber zu nutzen, da dies wahrscheinlich wieder zu den Abstürzen führen würde :(
 
Aber eine andere möglichkeit hast du nicht, zumindest solange du den nouveau Treiber nicht zum laufen kriegst, wobei auch mit diesen die Chancen eher schlecht sind, dass es reibungslos läuft wenn wirklich die graka das Problem ist.
Es läuft jetzt wahrscheinlich, weil der Fehler in Bereichen des chips steckt, die der VESA treiber nicht ansteuert
 
  • Thread Starter Thread Starter
  • #20
Nagut, dann werde ich jetzt erstmal akzeptieren, dass ich keinen externen Monitor nutzen kann :(
 
Zurück
Oben