FreeBSD 10.0 und Thinkpad X201

bastorran

Active Member
Hallo zusammen,

nach langem Mitlesem hier und zwei gescheiterten Versuchen habe ich es im Sommer endlich geschafft, FreeBSD auf meinem Laptop zu installieren (um ein wenig Öl aufs Feuer zu gießen: ich habe Debian wegen systemd abgeschafft :-P ).

Prinzipiell läuft auch alles sehr gut, allerdings habe ich ein, zwei Dinge, die noch nicht so tun, wie ich es gewohnt bin.

1. Wechsel von internem zu externem Lautsprecher
Wenn ich von meinen internen Lautsprechern zum externen Audio-Ausgang wechseln möchte, muss ich dies mittels sysctl hw.snd.default_unit=0 machen. Ebenfalls umgekehrt. Gibt es die Möglichkeit, automatisch bei Einstöpseln der externen Lautsprecher mittels eines (ACPI-)Events sysctl auszuführen?

Mit sysctl hw.snd.default_auto=2 habe ich es bereits ausprobiert, dies scheint sich aber tatsächlich nur auf Soundkarten zu beziehen, sprich, wenn ich eine USB-Soundkarte einstecken würde.

2. Verwendung der Mute-Taste
Wenn ich die extra Mute-Taste drücke, werden immer nur die internen Lautsprecher stumm geschalten und nicht auch angeschlossene externe Lautsprecher. Ich habe bereits versucht XF86AudioMute abzufangen, dies scheint aber nicht ausgelöst zu werden. Bei acpi_ibm scheint man ja einiges einstellen zu können, allerdings Blick ich da noch nicht so richtig durch.
Code:
dev.acpi_ibm.0.initialmask: 2060
dev.acpi_ibm.0.availmask: 134217727
dev.acpi_ibm.0.events: 1
dev.acpi_ibm.0.eventmask: 134217727
dev.acpi_ibm.0.hotkey: 1333
dev.acpi_ibm.0.lcd_brightness: 0
dev.acpi_ibm.0.volume: 7
dev.acpi_ibm.0.mute: 1
dev.acpi_ibm.0.thinklight: 0
dev.acpi_ibm.0.bluetooth: 0
dev.acpi_ibm.0.wlan: 1
dev.acpi_ibm.0.fan_speed: 3265
dev.acpi_ibm.0.fan_level: 0
dev.acpi_ibm.0.fan: 1
dev.acpi_ibm.0.handlerevents: NONE

3. Sonstiges
Unter Linux konnte man das Laden der Batterie steuern (ab welchem Prozentlevel und bis zu welchem Prozentlevel). Leider habe ich bis jetzt unter FreeBSD noch nichts dazu gefunden, vermute ich richtig, dass dies acpi_ibm noch nicht unterstützt?

Festplattenzugriffe auf meine SSD scheinen mir auch wesentlich langsamer zu sein, wie unter Linux (nur subjektiv). Könnte ich da während der Installation einen Fehler gemacht haben? Es wurde mit UFS und TRIM-Support formatiert.

Ich würde mich freuen, wenn mir hier jemand bei diesen Problemen helfen kann!

Viele Grüße
bastorran
 
1. Wechsel von internem zu externem Lautsprecher
Wenn ich von meinen internen Lautsprechern zum externen Audio-Ausgang wechseln möchte, muss ich dies mittels sysctl hw.snd.default_unit=0 machen. Ebenfalls umgekehrt. Gibt es die Möglichkeit, automatisch bei Einstöpseln der externen Lautsprecher mittels eines (ACPI-)Events sysctl auszuführen?

Mit sysctl hw.snd.default_auto=2 habe ich es bereits ausprobiert, dies scheint sich aber tatsächlich nur auf Soundkarten zu beziehen, sprich, wenn ich eine USB-Soundkarte einstecken würde.
Du musst die richtigen Einstellungen für "nid", "as", und "seq" in /boot/device.hints eintragen, so, wie es in "man snd_hda" beschrieben ist. Bei meinem X230 ist es z. B.:
Code:
hint.hdaa.0.nid20.config="as=1 seq=0 device=Speaker"
hint.hdaa.0.nid21.config="as=1 seq=15 device=Headphones"
 
Hallo Sickboy,

cool, mit folgenden Zeilen hat es geklappt:
Code:
hint.hdaa.0.nid31.config="as=1 seq=0 device=Speaker"
hint.hdaa.0.nid25.config="as=1 seq=15 device=Headphones"

Vielen Dank Dir!
 
bastorran schrieb:
Festplattenzugriffe auf meine SSD scheinen mir auch wesentlich langsamer zu sein, wie unter Linux (nur subjektiv). Könnte ich da während der Installation einen Fehler gemacht haben? Es wurde mit UFS und TRIM-Support formatiert.
Leider macht FreeBSD meines Wissen nach wie vor nur dann ein Alignement auf 4k-Blöcke, wenn er das Speichermedium als 4k-Modum erkennt. Ich persönlich finde das nicht besonders elegant, da ein generell 4k-Alignement niemandem schaden würde... Schaue einmal mit gpart show wie viele Kilobyte vor der ersten Partition frei sind. Sind es 40, ist alles gut. Sind es nur 36, ist das Alignement falsch, was dann auf die Performance schlägt.
 
Mit sysctl hw.snd.default_auto=2 habe ich es bereits ausprobiert, dies scheint sich aber tatsächlich nur auf Soundkarten zu beziehen, sprich, wenn ich eine USB-Soundkarte einstecken würde.
Korrekt! Aber die richtige Lösung hast du ja schon bekommen ;)
2. Verwendung der Mute-Taste
Wenn ich die extra Mute-Taste drücke, werden immer nur die internen Lautsprecher stumm geschalten und nicht auch angeschlossene externe Lautsprecher. Ich habe bereits versucht XF86AudioMute abzufangen, dies scheint aber nicht ausgelöst zu werden.
Ich habe ein X200s und da funktioniert noch nicht mal die Mute Taste für die internen Lautsprecher. Ich habe mir dann einfach mal eine Tastenkombination im Window Manager angelegt, die folgendes ausführt: "mixer vol 0"
Damit solltest du auch beides zum Schweigen bringen können. Vermutlich nicht mit der Mute Taste aber immerhin!
3. Sonstiges
Unter Linux konnte man das Laden der Batterie steuern (ab welchem Prozentlevel und bis zu welchem Prozentlevel). Leider habe ich bis jetzt unter FreeBSD noch nichts dazu gefunden, vermute ich richtig, dass dies acpi_ibm noch nicht unterstützt?
Danach habe ich vor einer Weile auch intensiv gesucht und wurde nicht fündig... Ich hab mir dann auch mal den 9 Zellen Akku geholt und seitdem sehe ich alles ohnehin entspannter :D
 
Hmm, interessant.

Ich hätte gerne das gleiche Verhalten (automatischer Wechsel beim Einstöpseln). Ich habe da aber ein kleines Problem:
Code:
> cat /dev/sndstat
Installed devices:
pcm0: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm1: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm2: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm3: <Realtek (0x0282) (Internal Analog)> (play/rec)
pcm4: <Realtek (0x0282) (Front Analog)> (play/rec) default

Bei mir sind das separate Devices. Und das pcm4 Device taucht auch nicht erst auf, wenn ich da was Einstöpsel. Deswegen funktioniert hw.snd.default_auto=2 auch nicht.

Dazu kommt, dass laufende PCM Nodes nicht umgeleitet werden wenn man hw.snd.default_unit ändert. Man muss die Player also dazu bringen die Node neu zu öffnen (bei den meisten reicht ein manuelles Pause/Play. Bei Videos im Browser muss man die Seite neu laden.

Ich müsste also die Devices zu einem zusammenfriemeln damit solche Automagie transparent funktioniert.
 
Leider macht FreeBSD meines Wissen nach wie vor nur dann ein Alignement auf 4k-Blöcke, wenn er das Speichermedium als 4k-Modum erkennt. Ich persönlich finde das nicht besonders elegant, da ein generell 4k-Alignement niemandem schaden würde... Schaue einmal mit gpart show wie viele Kilobyte vor der ersten Partition frei sind. Sind es 40, ist alles gut. Sind es nur 36, ist das Alignement falsch, was dann auf die Performance schlägt.
Mmh, bei mir sagt er, dass es 34kB sind? Allerdings finde ich es auch nicht so schlimm, dass alles ein wenig langsamer ist, dass sich eine Neuinstallation lohnen würde.

Ich habe ein X200s und da funktioniert noch nicht mal die Mute Taste für die internen Lautsprecher. Ich habe mir dann einfach mal eine Tastenkombination im Window Manager angelegt, die folgendes ausführt: "mixer vol 0"
Damit solltest du auch beides zum Schweigen bringen können. Vermutlich nicht mit der Mute Taste aber immerhin!
Das ist natürlich nicht so elegant, aber werde ich es wohl so lösen müssen ;)

Vielen Dank für Eure Hilfe!

@Kamikaze : Jetzt wollte ich schon schreiben, wie ich bei mir herausgefunden habe, welche Devices ich wie zusammenstöpseln muss, aber bei Deiner Beitragszahl, weißt Du das wahrscheinlich besser wie ich :)
 
@Kamikaze : Jetzt wollte ich schon schreiben, wie ich bei mir herausgefunden habe, welche Devices ich wie zusammenstöpseln muss, aber bei Deiner Beitragszahl, weißt Du das wahrscheinlich besser wie ich :)
Erst mal Entschuldigung für den Entführungsversuch.

Ich lese mir die Manpage noch mal gründlich durch und berichte dann ggf. noch mal hier falls ich auf neue Erkenntnisse stoße.
 
2. Verwendung der Mute-Taste
Wenn ich die extra Mute-Taste drücke, werden immer nur die internen Lautsprecher stumm geschalten und nicht auch angeschlossene externe Lautsprecher. Ich habe bereits versucht XF86AudioMute abzufangen, dies scheint aber nicht ausgelöst zu werden. Bei acpi_ibm scheint man ja einiges einstellen zu können, allerdings Blick ich da noch nicht so richtig durch.
Code:
dev.acpi_ibm.0.initialmask: 2060
dev.acpi_ibm.0.availmask: 134217727
dev.acpi_ibm.0.events: 1
dev.acpi_ibm.0.eventmask: 134217727
dev.acpi_ibm.0.hotkey: 1333
dev.acpi_ibm.0.lcd_brightness: 0
dev.acpi_ibm.0.volume: 7
dev.acpi_ibm.0.mute: 1
dev.acpi_ibm.0.thinklight: 0
dev.acpi_ibm.0.bluetooth: 0
dev.acpi_ibm.0.wlan: 1
dev.acpi_ibm.0.fan_speed: 3265
dev.acpi_ibm.0.fan_level: 0
dev.acpi_ibm.0.fan: 1
dev.acpi_ibm.0.handlerevents: NONE

Ich meine, ich habe mir vor langer Zeit was mit acpi_ibm event hooks und shell scripten hingebastelt, aber ich weiß nicht mehr genau, ob die Mute-Taste da auch dabei war.
Ich kann heute Abend mal nachschauen. Eventuell hat das aber das Upgrade von 9.2 auf 10.0 auch nicht überstanden, momentan nutze ich FreeBSD auf dem Laptop leider nur selten.
 
Also bei mir hat die Taste auch keine Funktion bei xev z. B. Wenn sie dort irgendwas macht, kann man ja leicht einen Befehl drauflegen. Ist das bei euren Thinkpads anders?
 
Also bei mir hat die Taste auch keine Funktion bei xev z. B. Wenn sie dort irgendwas macht, kann man ja leicht einen Befehl drauflegen. Ist das bei euren Thinkpads anders?
Mir ist grade aufgefallen, dass sie zwar nicht als XF86AudioMute auftaucht, dafür aber den Tastencode #140 hat. Dann kann man ja auch einfach damit arbeiten!
 
Zurück
Oben