Freebsd battery vorgaukeln?

ath0

Well-Known Member
Hallo miteinander,

da mir seit ich kein Gnome mehr einsetze (ca 1,5 Jahre) ein solches "Tool" fehlt und mir schon häufiger deswegen der Laptop aus Strommangel ausgegangen ist, habe ich mich mal daran gemacht eine Energystandsanzeige für den Systray zu basteln. Da ich jetzt aber ungern meinen Laptop bzw. seine Battery Kaputt Spielen will bis ich den von mir gewünschten Funktionsumfang erreicht habe und ich lieber an meinem Desktop sitze, würde ich die Entwicklung gerne in einer VirtualBox weiter betreiben.

Jetzt die Frage, gibt es einen Weg FreeBSD das Vorhanden sein einer Battery vorzutäuschen? Wenn ja, wie stelle ich das an bzw. wo finde ich Informationen dazu und wie verändere ich dann die Werte hw.acpi.battery.life, time, state ( ich rate mal über sysctl!?)?
 
Naja du koenntest dir mal angucken wie das in sys/dev/acpica/acpi_battery.c gemacht ist und das als eigenes kleines kernel module heraus extrahieren und dann die flags noch mit "CTLFLAG_WR" verordern und schon solltest du die Werte sowohl lesen als auch ueber sysctl schreiben koennen.
 
Hallo,

falls Du conky verwendest, könnte Dir auch dieser Teil aus der .conkyrc weiterhelfen (es ist keine sehr schöne Lösung, aber funktioniert). Verwende ich allerdings unter Linux.

Code:
${if_match "${acpiacadapter ADP1}" == "on-line"}\
${if_existing /sys/class/power_supply/BAT0/status}\
${color2}BAT: online / ${battery_percent BAT0}%${color} | \
${if_match ${battery_percent BAT0} >= 78}\
${execi 600 notify-send -u critical -t 0 "Battery health notification" "Please remove battery to ensure longer life\!"}\
${endif}\
${else}\
${color2}BAT: online / U ${color}| \
${endif}\
${else}\
${if_match ${battery_percent BAT0} >= 28}\
${color2}\
${else}\
${if_match ${battery_percent BAT0} >= 10}\
${execi 300 notify-send -u critical -t 0 "Battery warning" "Please plug in the AC adapter\!"}\
${color orange}\
${else}\
${execi 30 notify-send -u critical -t 0 "Battery warning" "Please plug in the AC adapter\!"}\
${color red}\
${endif}\
${endif}\
BAT: offline / ${battery_percent BAT0}% ${battery_time BAT0}${color} | \
${endif}\
 
@s-tlk Danke für den Hinweis, währe eine Möglichkeit aber ich hatte gehofft, dass es da was gibt wo ich nicht am System Source fummeln muss.

@bastorran nein conky verwende ich nicht, das Problem bei dem Teil ist, dass ich es nicht ständig im Auge habe. Natürlich könnte man sich eine Warnmeldung geben lassen, aber auf so was stehe ich gar nicht :)
 
Ich habe vor Jahren mal Batterieüberwachung per ACPI für FreeBSD in tint gecodet. Leider hat es der Code auch fast 2,5 Jahre später nicht in ein Release geschafft, da das Projekt mehr oder weniger tot zu sein scheint. Aber vielleicht hilft dir der Patch von damals: http://code.google.com/p/tint2/sour...format=side&path=/trunk/src/battery/battery.c Wie man eine Batterie ohne größere Kerneleingriffe emulieren kann, wüsste ich allerdings auch nicht.
 
Man kann die Batteriewerte doch per sysctl auslesen. Wieso sollte man dazu etwas extra emulieren müssten, wenn man nur zwei Zahlen ein und ausliest?
 
Ich habe vor Jahren mal Batterieüberwachung per ACPI für FreeBSD in tint gecodet. Leider hat es der Code auch fast 2,5 Jahre später nicht in ein Release geschafft, da das Projekt mehr oder weniger tot zu sein scheint. Aber vielleicht hilft dir der Patch von damals: http://code.google.com/p/tint2/sour...format=side&path=/trunk/src/battery/battery.c Wie man eine Batterie ohne größere Kerneleingriffe emulieren kann, wüsste ich allerdings auch nicht.

Ah also hat das doch schon jemand anders vermisst :D
Ich hatte auch überlegt das Teil zu patchen, habe mich aber dagegen entschieden, da ich nicht wusste wieviel ich da umbauen muss. Letztendlich ist das eigentlich waren es nur ein paar Stunden Arbeit solch eine Anwendung zu schreiben.

Mal so die Frage, warum packst du den Patch nicht in den Port?

Danke für den Patch, werde den auch mal probieren :)
 
Man kann die Batteriewerte doch per sysctl auslesen. Wieso sollte man dazu etwas extra emulieren müssten, wenn man nur zwei Zahlen ein und ausliest?

Naja Problem ist, die Parameter werden anscheinend vom Kernel nur zur Verfügung gestellt, wenn auch eine Battery vorhanden ist. Daher bräuchte ich etwas das mir das emuliert, sonst muss mein Laptop eben doch herhalten oder ich baue meine drei wraper Funktionen so um das die anstelle der Systemparameter in einer Datei lesen. letzteres würde ich vorziehen da ich nicht weiß wie weit meine Kreativität geht oder wie lange ich noch Lust habe daran weiter zu basteln ;)
 
Hoi,

also seit zig Jahren les ich dazu oifach Werte per sysctl aus und lass die von nem Script übär den Cronbären durchnudeln. Wenn der auf Akku ist werte ich die Restlaufzeit aus. Sofern diese weniger als X Minuten gibts ne Warnung und die Kiste führt dann zeitgesteuert oifach en Shutdown durch, falls das Netzteil ned angeschlossen wird.

Zwecks Energiestandsanzeige kannst Du einfach die Restlaufzeit des Akkus aus sysctl auswerten. Das setzt unter Umständen abär eine vorherige Messreihe voraus, da die Entladung nicht wirklich linear abläuft. Einfach den Akku voll laden, ein Script anwerfen wo jede Minute die Restlaufzeit ausliest und das Spiel so lang treiben bis der Akku an dem Punkt ist wo man ihn nicht weiter entladen sollte. Danach kannst Du die gewonnenen Messdaten für die Anzeige nutzen. Eine belastbare Aussage über die verbleibende Restenergie und Laufzeit ist somit recht gut möglich.

Gruß Bummibär
 
Ich habe vor Jahren mal Batterieüberwachung per ACPI für FreeBSD in tint gecodet. Leider hat es der Code auch fast 2,5 Jahre später nicht in ein Release geschafft, da das Projekt mehr oder weniger tot zu sein scheint. Aber vielleicht hilft dir der Patch von damals: http://code.google.com/p/tint2/sour...format=side&path=/trunk/src/battery/battery.c Wie man eine Batterie ohne größere Kerneleingriffe emulieren kann, wüsste ich allerdings auch nicht.

Sag doch was. :p
Ich setz es mir mal auf die Todo Liste, den Patch im Portstree zu committen. :)
 
Ich muss zugeben, dass die Sache etwas unter den Tisch gefallen ist. Ich hatte den Patch eingereicht, er wurde committet und wenn es ein neues Release gegeben hätte, wäre er ganz von allein in die Ports gewandert. Da es aber nie eines gab und ich den Port seit sehr langer Zeit nicht neu gebaut habe, ist das nie passiert. Wenn ihr einen PR haben wollt, schreibe ich euch gern einen. :)
 
Kamikaze hat auch ein Script im Wiki veröffentlicht, das auf verschiedene Zustände reagiert. Das ist einfach und gut.

Ich selbst hatte mir die hübsche Anzeige von Desktop-BSD geholt (die ist zusammen mit den anderen Tools in den Ports) und dann nur diese genutzt und aktiviert. Das funktioniert auch sehr schön, brint aber eine Mange Ballast.

Als ich mit OpenBSD mal spielte und da im fbpanel keine Anzeige hinbekam, rief ich auch ein Script auf um dann je nach Situation "AC" oder die Restlaufzeit anzugeben. Auch der Ladestand geht da einfach, ist halt Geschmacksache. Die Farben der Anzeige passte ich dann auch nach unterschiedlichen Werten etwas an und ganz zum Schluss blendete ich ein Bateriesymbol als Grafik auf allen Bildschirmen im Vordergrund ein, Blinken habe ich nicht hinbekommen.
Das war alles nur gespielt und ich weiß auch nicht mehr, ob das automatische Herunterfahren auch schon dabei war. Das sollte aber nur ein kleines Problem sein. Denke ich.
 
Ich muss zugeben, dass die Sache etwas unter den Tisch gefallen ist. Ich hatte den Patch eingereicht, er wurde committet und wenn es ein neues Release gegeben hätte, wäre er ganz von allein in die Ports gewandert. Da es aber nie eines gab und ich den Port seit sehr langer Zeit nicht neu gebaut habe, ist das nie passiert. Wenn ihr einen PR haben wollt, schreibe ich euch gern einen. :)

Jap, mach mal. :)
 
Ich muss zugeben, dass die Sache etwas unter den Tisch gefallen ist. Ich hatte den Patch eingereicht, er wurde committet und wenn es ein neues Release gegeben hätte, wäre er ganz von allein in die Ports gewandert. Da es aber nie eines gab und ich den Port seit sehr langer Zeit nicht neu gebaut habe, ist das nie passiert. Wenn ihr einen PR haben wollt, schreibe ich euch gern einen. :)

Ich werde meinen Krempel weiter machen, auf jeden Fall bis ich keine Lust mehr habe oder es für vertretbar halte es anderen zur Verfügung zu stellen. Alleine schon weil es solch ein Tool als standallone Lösung in GTK und C dazu noch für FreeBSD nicht zu geben scheint. Endlich mal wieder ne Gelegenheit etwas zu basteln das auch geht wenn man nicht ewig Zeit hat. Aber ich hätte nicht angefangen wenn das Battery Dingens von Tint2 funktioniert hätte. Ganz neben bei hätte es mir viele Stunden suchen und ne Menge unerwarteter Systemausfälle erspart. :D
Ich denke es gäbe viele Leute die dir sehr dankbar währen.
 
Zurück
Oben