Archiv

Archive for the ‘Kernel’ Category

Awesome Battery Widget

Seit einer Woche bin ich stolzer Besitzer eines Netbooks (Lenovo S10-3).

Auf dem Netbook läuft natürlich Gentoo mit aktuellem 2.6.38 Kernel (leider noch ~amd64), den brauche ich für den W-LAN-Chip (bcm4313) in dem Netbook. Dort wird nämlich der seit 2.6.37 enthaltene Staging Treiber brcm80211 benötigt. Über Google solltet ihr aber mehr dazu finden. Ein kleiner Tipp hier schon, wenn ihr die sys-kernel/linux-firmware installiert müssen die Symlinks noch angepasst werden ;).

Soviel also dazu.

Als Window-Manager setze ich awesome ein. Leider bietet awesome keine Widget zur Anzeige des Akku-Ladestandes bzw. wird eines angeboten über die Vicious Bibliothek, welches aber bei mir nicht funktioniert hat.
Deshalb hab ich mir gedacht, ich bau mir da selbst was.

Gesagt, getan….

Ich habe mir folgendes Script geschrieben, welches mit Hilfe von sys-power/acpi die Ladezustand bzw. die verfügbare Kapazität ausliest.


#!/bin/bash

# Get ACPI-State
str_ACPI=$(acpi | awk '{print $4}')
str_State=$(acpi | awk '{print $3}')

# Get Length of strings
i_ACPI_Length=$(expr length $str_ACPI)
i_State_Length=$(expr length $str_State)

# Get length of the strings without comma
let i_New=$i_ACPI_Length-1
let i_StLen=$i_State_Length-1

# Get substrings to delete comma
i_State=${str_ACPI:0:$i_New}
str_State=${str_State:0:$i_StLen}

# Print state;
# Return state to rc.lua

echo " $str_State $i_State"

Der Zustand des Akkus und die Restkapazität werden dann mit Hilfe des echo-Befehls zurückgegeben.

Dieses Script wird automatisch alle 10 Sekunden aus der lua.rc aufgerufen.
Hier mal der Code dazu:


-- Eigenes Widget
mybat = widget( {type = "textbox"} )
mytimer = timer( {timeout = 10 } )
mytimer:add_signal("timeout",  function() local fd =  io.popen("/home/fabi/Programmierung/Bash/bat_state.sh") mybat.text =  fd:read("*a") fd:close() end)
mytimer:emit_signal("timeout")
mytimer:start()

Der Timer (mytimer) ruft das Script alle 10 Sekunden auf, und der übergebene Wert wird in den Inhalt des zuvor erstellten Text-Widget mybat geschrieben.

Dieses Widget muss nun noch in den Tray eingefügt werden:


mywibox[s].widgets = {
 {
 mylauncher,
 mytaglist[s],
 mypromptbox[s],
 layout = awful.widget.layout.horizontal.leftright
 },
 mylayoutbox[s],
 mytextclock,
 mybat,
 s == 1 and mysystray or nil,
 mytasklist[s],
 layout = awful.widget.layout.horizontal.rightleft
 }

So, nun sollte das ganze funktionieren.

Hier mal ein paar Screenshots davon:

Laufen bzw. getestet ist das ganze unter awesome 3.4.8.

Das Script wurde auch schon hier im Winfuture-Forum veröffentlicht. Entstanden ist das ganze mit freundlicher Unterstützung von psychon aus dem Winfuture-IRC-Channel (irc.spotchar.org/#winfuture).

Für Kritik und Anregungen bin ich wie immer dankbar.
Viel Spaß damit.

TP-LINK TL-WN821N unter Linux (Gentoo)

Mein alter RTL8187 USB W-LAN Stick hat jetzt endlich auch ausgedient, bzw. musste ich ihn ersetzen, da ich unglücklich
dran gestoßen bin und er einen Wackelkontakt hatte.

Ich habe ihn dann durch einen TP-LINK TL-WN821N ersetzt. Dieser Stick hat einen Atheros 9170 Chipsatz. Dieser Chipsatz wird momentan leider noch nicht
komplett von Haus aus vom Linux Kernel unterstützt. Aber um ihn zu verwenden sind nur wenige Schritte notwendig.

Also, zuerst müssen folgende Treiber im Kernel aktiviert werden:

Kernel Option

Kernel Option

Zu finden ist die Option unter „Device Drivers->Network Device Support->Wireless Lan->Atheros Wireless Cards„.

Als nächstes benötigen wir die Firmware für das Gerät, ohne diese Firmware kann der Stick nicht verwendet werden.
Zu finden ist die aktuelle Firmware hier: http://linuxwireless.org/en/users/Drivers/ar9170.fw.
Dort muss die Datei ar9170.fw runtergeladen werden. Diese Firmware-Datei sollte dann nach /lib/firmware kopiert werden (kann auch ein anders Verzeichnis sein, falls nicht vorhanden, einfach erstellen!!).

So jetzt kann der Kernel vollends konfiguriert werden. Dazu navigiert man zu folgendem Punkt: Device Drivers -> Generic Driver Options.

Dort muss der Punkt „Include in-kernel firmware blobs in kernel binary“ ausgewählt werden. Bei dem Punkt „External firmware blobs to build into the kernel binrary“ muss der Name der Firmware (ar9170.fw) angegeben werden.
Unter dem letzten Punkt muss der Speicherort der Datei angegeben werden. Im hier beschriebenen Fall ist das /lib/firmware.

Firmware laden

Firmware laden

Danach kann der Kernel ganz normal gebaut werden.

Getestet wurde das ganze unter:

System: Gentoo Linux
Kernel: 2.6.34-gentoo-r12 (x86_64)

Die Anleitung sollte auch für andere Distributionen funktionieren, bei denen man keinen eigenen Kernel verwendet. Die Firmware-Datei muss dann nur an den richtigen Platz kopiert werden, wie z.B. /lib/firmware, /usr/bin/firmware, etc. Über das Wiki der jeweiligen Distri sollte das herauszufinden sein.

Kategorien:Gentoo, Kernel, Linux, WLAN Schlagwörter: , , , , , ,