Archive for July 2011

Eject och /dev/cdrom

(obs, en uppdatering har åtgärdat detta problem)
Programmet Eject tillsammans med Archlinux kan göra programmet odugligt. Laddar man ner Ejects källkod och tittar i konfigureringskriptet hittar man följande rad;

–enable-default-device set default CD-ROM device [default=sr0]“

Precis som det står här, opassande nog använder vi inte /dev/cdrom utan /dev/sr0. Eject har tidigare fungerat utan problem. Det var först för någon månad sedan som jag fick felmeddelande om att man inte kunde hitta “cdrom”. En enkel lösning, om än tillfällig är att helt enkelt göra så att /dev/sr0 länkar till /dev/cdrom:
alex:~> /dev
alex:/dev> sudo ln sr0 cdrom

Lm sensors och Asrock, Intel Atom

Jag använder mig utav Awesome wm, en fönsterhanterare som är vad namnet antyder, awesome. Jag använder mig av för mig nyttiga widgets som jag när tiden finner försöker att optimera. När jag har mycket dödtid händer det att jag försöker hitta inspiration till nya kreationer, något jag alltså har gjort idag och som jag anser förtjänar ett inlägg på min blogg. Tidigare har jag inte känt något större behov utav att kolla temperaturen på CPU:n men idag tänkte jag, varför inte?

Jag visste att det var ganska vanligt att folk gjorde en widget som visade temperaturen, jag tänkte därför att jag inte skulle behöva skriva alltför mycket som skulle visa den information jag var ute efter, detta var därför det första jag gjorde. Vicious använde jag sedan tidigare och jag visste att det fanns en färdig modul för detta ändamål. Det andra jag gjorde var att installera Lm sensors och körde sensors-detect som sig bör, efter att ha svarat yes på följdfrågorna, laddade upp de moduler jag blev uppmanad att göra (coretemp max6650) och skrev in sensors kom följande upp:


coretemp-isa-0000
Adapter: ISA adapter
Core 0: +7.0°C (crit = +90.0°C)

coretemp-isa-0001
Adapter: ISA adapter
Core 1: +22.0°C (crit = +90.0°C)

Jag fick en känsla utav att något fattades, detta var ju inte den information jag var ute efter. Jag blev lite lost och försökte hitta lösningar på Google/bbs.archlinux.org. Efter en stunds sökande försökte jag tänka lite logiskt och göra om processen. Jag körde sensors-detect och läste den information jag fick, tydligen fattades det en modul för moderkortet vid namn NUVOTON W83677HG I. Äntligen något att gå på tänkte jag. Jag märkte att problemet var ganska vanligt. Jag hittade också en lösning som verkade vara väldigt mycket overkill för att se temperaturen i en widget, något jag egentligen skulle klara mig utan. Lösningen skulle resultera i att kompilera en modul till kärnan. Jag valde att inte göra det, istället tänkte jag att lösningen kanske var outdated och därför inte längre aktuell. Jag valde att testa att köra sudo modprobe w83627ehf för att se om min tanke stämde. Det visade det sig att jag hade rätt, skönt tänkte jag. kommandot sensors visade nu informationen jag var ute efter. Nu var det dags att fixa till min widget, jag skrev inte hela själv, men jag kortade ner den väldigt mycket och ändrade nästan allting. Slutresultatet:


-- CPU temp widget
tempwidget = widget({ type = "textbox" })
vicious.register(tempwidget, vicious.widgets.thermal,
function (widget, args)
if args[1] >= 75 and args[1] < 80 then
return "" .. theme.fg_temp2_widget .. "temp " .. col .. theme.fg_temp3_widget .. args[1] .. "C " .. col .. ""
else
return "" .. theme.fg_temp_widget .. "temp " .. col .. theme.fg_temp1_widget .. args[1] .. "C " .. col .. ""
end
end, 19, { "w83627ehf.656", "core"} )

Det största problemet jag hade i det här fallet var den sista raden. Originalet såg ut så här:
end, 19, “thermal_zone0″ )

thermal_zone används inte längre. /sys används istället för /proc och hwmon används istället för thermal_zone (det sistnämnda är åtminstone någonting jag har fått för mig). Till en början var jag inne och kollade runt i olika mappar efter det som ska motsvara tidigare /proc, något som tog tid men inte gav något alls. Jag hade tidigare kollat i mappen där vicious förvarar sina widgets och lite slött studerat thermal.lua. Något jag nu gjorde lite mer ingående. Jag blev intresserad av att veta vad som gömde sig under /sys/devices/platform som tillhörde “core”:

alex:~> ls /sys/devices/platform/
▕ drwxr-xr-x▏< hour│ 0B│coretemp.0
▕ drwxr-xr-x▏< hour│ 0B│coretemp.1
▕ drwxr-xr-x▏< hour│ 0B│i8042
▕ drwxr-xr-x▏< hour│ 0B│pcspkr
▕ drwxr-xr-x▏3 min │ 0B│power
▕ drwxr-xr-x▏< hour│ 0B│regulatory.0
▕ drwxr-xr-x▏< hour│ 0B│reg-dummy
▕ drwxr-xr-x▏< hour│ 0B│serial8250
▕ drwxr-xr-x▏< hour│ 0B│vesafb.0
▕ drwxr-xr-x▏< hour│ 0B│w83627ehf.656
▕ -rw-r--r--▏< hour│ 4K│uevent

w83627ehf.656 blev genast intressant, den påminde mycket om den modul jag tidigare aktiverade för att slutligen kunna se temperaturen i terminalen. Med denna information kunde jag fixa den sista raden i min widget och kan nu se temperaturen. Var det värt besväret? Jag vet inte, jag lärde mig en del och har hade ändå inget bättre för mig.