<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.194.69.10</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.194.69.10"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/130.194.69.10"/>
	<updated>2026-04-21T23:17:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Status/Battery&amp;diff=25571</id>
		<title>Mer/Status/Battery</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Status/Battery&amp;diff=25571"/>
		<updated>2009-06-30T02:04:14Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: typographical: use header markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Battery monitor via bme==&lt;br /&gt;
n8x0 support is in devel as of 0.14.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install advanced-power&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To start the advanced-power applet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mer-&amp;gt;Settings-&amp;gt;Settings&lt;br /&gt;
Panels&lt;br /&gt;
Status Bar&lt;br /&gt;
Advanced Power&lt;br /&gt;
Ok and reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request for help==&lt;br /&gt;
smartq&#039;&#039;x&#039;&#039; is still under development, anyone with a smartq&#039;&#039;x&#039;&#039; and some python knowledge is encouraged to install hald-bme-smartq according to the instructions below and help debug the advanced-power applet, please contact toggles at the google mail domain for help or if you can provide any assitance.&lt;br /&gt;
&lt;br /&gt;
==Battery monitor on smartq (currently broken)==&lt;br /&gt;
Thanks to zenvoid and qwerty12 for all the help&amp;lt;br&amp;gt;&lt;br /&gt;
As of 0.14 you need to upgrade to Devel and then as root (sudo was broken on the tablet I was borrowing time on):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
wget http://tommywatson.com/Mer/hald-addon-smartq_0.02_armel.deb&lt;br /&gt;
dpkg -i hald-addon-smartq_0.02_armel.deb&lt;br /&gt;
apt-get install advanced-power&lt;br /&gt;
wget http://tommywatson.com/Mer/AdvancedPowerMonitor.tgz&lt;br /&gt;
cd /&lt;br /&gt;
tar -zxf /root/AdvancedPowerMonitor.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start the advanced-power applet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mer-&amp;gt;Settings-&amp;gt;Settings&lt;br /&gt;
Panels&lt;br /&gt;
Status Bar&lt;br /&gt;
Advanced Power&lt;br /&gt;
Ok and reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Status/Battery&amp;diff=25572</id>
		<title>Mer/Status/Battery</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Status/Battery&amp;diff=25572"/>
		<updated>2009-06-30T01:59:25Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Battery monitor via bme&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
n8x0 support is in devel as of 0.14&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install advanced-power&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To start the advanced-power applet&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mer-&amp;gt;Settings-&amp;gt;Settings&lt;br /&gt;
Panels&lt;br /&gt;
Status Bar&lt;br /&gt;
Advanced Power&lt;br /&gt;
Ok and reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request for help&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
smartq&#039;&#039;x&#039;&#039; is still under development, anyone with a smartq&#039;&#039;x&#039;&#039; and some python knowledge is encouraged to install hald-bme-smartq according to the instructions below and help debug the advanced-power applet, please contact toggles at the google mail domain for help or if you can provide any assitance.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Battery monitor on smartq&#039;&#039;&#039; (currently broken)&amp;lt;br&amp;gt;&lt;br /&gt;
Thanks to zenvoid and qwerty12 for all the help&amp;lt;br&amp;gt;&lt;br /&gt;
As of 0.14 you need to upgrade to Devel and then as root (sudo was broken on the tablet I was borrowing time on)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
wget http://tommywatson.com/Mer/hald-addon-smartq_0.02_armel.deb&lt;br /&gt;
dpkg -i hald-addon-smartq_0.02_armel.deb&lt;br /&gt;
apt-get install advanced-power&lt;br /&gt;
wget http://tommywatson.com/Mer/AdvancedPowerMonitor.tgz&lt;br /&gt;
cd /&lt;br /&gt;
tar -zxf /root/AdvancedPowerMonitor.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start the advanced-power applet:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mer-&amp;gt;Settings-&amp;gt;Settings&lt;br /&gt;
Panels&lt;br /&gt;
Status Bar&lt;br /&gt;
Advanced Power&lt;br /&gt;
Ok and reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23712</id>
		<title>Mer/Documentation/BME Protocol</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23712"/>
		<updated>2009-06-12T07:19:27Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: /* Other information about battery life */ Link to and include Matan&amp;#039;s information about the meaning of retu adc register 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state. &lt;br /&gt;
&lt;br /&gt;
Existing code:&lt;br /&gt;
* Dummy server: https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&amp;amp;root=dsm&amp;amp;view=markup , released as LGPL 2.1.  (Bug: The server shouldn&#039;t send a status word before sending the response struct.)&lt;br /&gt;
* Simple command-line client written based on this web page: http://bowman.infotech.monash.edu.au/~pmoulder/bme-client.c .  (GPLv2+, assuming that the text on this web page is compatible with that license.)&lt;br /&gt;
&lt;br /&gt;
General protocol:&lt;br /&gt;
&lt;br /&gt;
* UNIX socket connection to /tmp/.bmesrv&lt;br /&gt;
* Client: send(&#039;BMentity&#039;)&lt;br /&gt;
* Server: send(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
After handshake:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    uint16      type, subtype;&lt;br /&gt;
} BMEHeader;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
types so far (NAME, (type, subtype)):&lt;br /&gt;
&lt;br /&gt;
== EM_BATTERY_INFO_REQ (0x06, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BATTERY_INFO_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_battery_info_reply {&lt;br /&gt;
    uint32      a;&lt;br /&gt;
    uint32      flags;&lt;br /&gt;
    uint16      c;&lt;br /&gt;
    uint16      d;&lt;br /&gt;
    uint16      temp;   // Battery temperature measured in Kelvin &lt;br /&gt;
    uint16      f;&lt;br /&gt;
    uint16      g;&lt;br /&gt;
    uint16      h;&lt;br /&gt;
    uint16      i;&lt;br /&gt;
    uint16      j;&lt;br /&gt;
    uint16      k;&lt;br /&gt;
    uint16      l;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK0 message (0x42, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     sw_status; // Battery monitor SW status&lt;br /&gt;
   uint16     instaneous_battery_voltage; // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint16      // Remaining standby time to battery low (mins)&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     unknown6;&lt;br /&gt;
   uint16     // Battery monitor check voltage (mV)&lt;br /&gt;
   uint16     // Battery low warning interval counter&lt;br /&gt;
   uint16     // Double median filtered battery voltage&lt;br /&gt;
   uint16     // Initial battery monitor voltage (mV)&lt;br /&gt;
   uint16     // Time per battery bar (mins)&lt;br /&gt;
   uint16     // DMF voltage sampled at first battery low (mV)&lt;br /&gt;
   uint32     // Average phone current (uA)&lt;br /&gt;
   uint16     // Most recent battery charge condition (mAh)&lt;br /&gt;
   uint16     // Lowest TX-Off voltage (mV)&lt;br /&gt;
   uint16     // Lowest TX-On voltage (mV)&lt;br /&gt;
   uint16     // Largest TX-Off/On voltage difference (mV)&lt;br /&gt;
   uint8      // Battery bar level log mask&lt;br /&gt;
   uint8      // Previous battery bar level&lt;br /&gt;
   uint8      // Battery low reason&lt;br /&gt;
   uint8      // CS state information &lt;br /&gt;
   uint16     // Number of battery bars&lt;br /&gt;
   uint16     // Battery type&lt;br /&gt;
   uint16     // Temperature, in kelvin&lt;br /&gt;
   uint16     // Battery capacity &lt;br /&gt;
   uint16     // Battery impedance (mOhm)&lt;br /&gt;
   uint16     // Present value of v_bat_full_level&lt;br /&gt;
   uint16     // Present value of v_bat_low_ths_mv&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
   uint16     unknown8;&lt;br /&gt;
   uint16     unknown9;&lt;br /&gt;
   uint16     // Load current estimated by Batmon4 (uA)&lt;br /&gt;
   uint16     unknown10;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The “Instantaneous battery voltage (mV)” field’s observed values have a certain regular spacing indicating a linear function of some integer value with a smaller range, presumably retu adc register #8.  If it is indeed from that register, then note there is a non-zero offset involved: from memory, one function that gives values consistent with the set of values observed and that somewhat matches observations of both fields (unfortunately with non-negligible delay between sampling the two so far) is mV = 2252.361 + 2.81361 * adc#8 (where the multiplier is fairly accurate if I&#039;ve correctly remembered it, but the constant could be out by some multiple of 2.81361).  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
The “Battery monitor check voltage (mV)” field has similar values to the “Instantaneous battery voltage (mV)” field, but without obvious regular spacing.  I don&#039;t know how it&#039;s calculated.  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
== Some BULK1 message (0x43, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK1_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk1_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Elapsed model time (min)&lt;br /&gt;
   uint16     // Tx-Off battery voltage (mV)&lt;br /&gt;
   uint16     // Tx-On battery voltage (mV)&lt;br /&gt;
   uint8      // Battery power state&lt;br /&gt;
   uint8      //  Batmon4 internal flags2&lt;br /&gt;
   uint8      // Batmon4 internal flags3&lt;br /&gt;
   uint8      // Charging method&lt;br /&gt;
   uint16     // Present Phi value (mV)&lt;br /&gt;
   uint16     // Present Delta Phi value (mV)&lt;br /&gt;
   uint8      // Charging mode &lt;br /&gt;
   uint8      // Previous charging mode &lt;br /&gt;
   uint8      // Charger type&lt;br /&gt;
   uint8      // Previous charger type&lt;br /&gt;
   uint16     // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint8      // Number of charger checks (0-9) ?&lt;br /&gt;
   uint8      // Charger recognition state&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     // Instantaneous charger current (mA)&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     // Charging time (min)&lt;br /&gt;
   uint16     // Average Vchar (mV)&lt;br /&gt;
   uint16     // Equivalent DC charger current (mA) &lt;br /&gt;
   uint8      // Battery full flag (0 or 1)&lt;br /&gt;
   uint8      // HW Cha PWM value L ??&lt;br /&gt;
   uint8      // Cha PWM value L ??&lt;br /&gt;
   uint8      unknown6;&lt;br /&gt;
   uint16     // Open switch battery voltage (mV)&lt;br /&gt;
   uint16     // Closed switch battery voltage (mV)&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK2 message (0x44, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK2_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk2_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Conf. battery footprint&lt;br /&gt;
   uint16     // Conf. minimum standby current (mA)&lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Safety level) &lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Empty)&lt;br /&gt;
   uint16     // Configured number of battery bars&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other information about battery life =&lt;br /&gt;
&lt;br /&gt;
Some battery-related information is also available from retu adc registers (which in turn are available via ioctl&#039;s on /dev/rutu: see retu-adc source).&lt;br /&gt;
&lt;br /&gt;
It&#039;s said that register 3 shows whether charging is occurring: with value 0 meaning &amp;quot;not being charged&amp;quot;, while &amp;quot;values 0xff and above&amp;quot; are an indication of the voltage being applied for charging.  Matan adds (http://talk.maemo.org/showpost.php?p=259465&amp;amp;postcount=43) that values around 0x100 indicate charging, while values around 0x170 indicate that the power source is connected but we aren&#039;t charging.&lt;br /&gt;
&lt;br /&gt;
Register 8 apparently indicates battery voltage.  See the note above about “instantaneous battery voltage (mV)” for how it might correspond to one measure of voltage.&lt;br /&gt;
&lt;br /&gt;
Note that this value can fluctuate a lot when the device is in use, but when idle it gets a good fit to the curve adc#8 = 438.3 + exp(p0 + p1*t) - exp(n0 + n1*t) where t is time (or more generally charge used or remaining), and p0,p1,n0,n1 are constants.  (I forget the values I found for them, but in any case it would be good to fit for them again once more data is on hand.)&lt;br /&gt;
&lt;br /&gt;
To invert this function to find idle time remaining (on assumption that the device was idle when the register was read), first see whether the adc#8 value is above or below 438.3, which tells you which exponential is dominant, and approximate the other exponential with a constant 3 (or a straight line if you like); can iterate and update this approximation for the neighbourhood of the solution found by the previous iteration.  -- pjrm&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23713</id>
		<title>Mer/Documentation/BME Protocol</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23713"/>
		<updated>2009-06-12T04:56:58Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: /* Other information about battery life */ Cross-reference bme information with retu adc description.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state. &lt;br /&gt;
&lt;br /&gt;
Existing code:&lt;br /&gt;
* Dummy server: https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&amp;amp;root=dsm&amp;amp;view=markup , released as LGPL 2.1.  (Bug: The server shouldn&#039;t send a status word before sending the response struct.)&lt;br /&gt;
* Simple command-line client written based on this web page: http://bowman.infotech.monash.edu.au/~pmoulder/bme-client.c .  (GPLv2+, assuming that the text on this web page is compatible with that license.)&lt;br /&gt;
&lt;br /&gt;
General protocol:&lt;br /&gt;
&lt;br /&gt;
* UNIX socket connection to /tmp/.bmesrv&lt;br /&gt;
* Client: send(&#039;BMentity&#039;)&lt;br /&gt;
* Server: send(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
After handshake:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    uint16      type, subtype;&lt;br /&gt;
} BMEHeader;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
types so far (NAME, (type, subtype)):&lt;br /&gt;
&lt;br /&gt;
== EM_BATTERY_INFO_REQ (0x06, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BATTERY_INFO_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_battery_info_reply {&lt;br /&gt;
    uint32      a;&lt;br /&gt;
    uint32      flags;&lt;br /&gt;
    uint16      c;&lt;br /&gt;
    uint16      d;&lt;br /&gt;
    uint16      temp;   // Battery temperature measured in Kelvin &lt;br /&gt;
    uint16      f;&lt;br /&gt;
    uint16      g;&lt;br /&gt;
    uint16      h;&lt;br /&gt;
    uint16      i;&lt;br /&gt;
    uint16      j;&lt;br /&gt;
    uint16      k;&lt;br /&gt;
    uint16      l;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK0 message (0x42, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     sw_status; // Battery monitor SW status&lt;br /&gt;
   uint16     instaneous_battery_voltage; // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint16      // Remaining standby time to battery low (mins)&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     unknown6;&lt;br /&gt;
   uint16     // Battery monitor check voltage (mV)&lt;br /&gt;
   uint16     // Battery low warning interval counter&lt;br /&gt;
   uint16     // Double median filtered battery voltage&lt;br /&gt;
   uint16     // Initial battery monitor voltage (mV)&lt;br /&gt;
   uint16     // Time per battery bar (mins)&lt;br /&gt;
   uint16     // DMF voltage sampled at first battery low (mV)&lt;br /&gt;
   uint32     // Average phone current (uA)&lt;br /&gt;
   uint16     // Most recent battery charge condition (mAh)&lt;br /&gt;
   uint16     // Lowest TX-Off voltage (mV)&lt;br /&gt;
   uint16     // Lowest TX-On voltage (mV)&lt;br /&gt;
   uint16     // Largest TX-Off/On voltage difference (mV)&lt;br /&gt;
   uint8      // Battery bar level log mask&lt;br /&gt;
   uint8      // Previous battery bar level&lt;br /&gt;
   uint8      // Battery low reason&lt;br /&gt;
   uint8      // CS state information &lt;br /&gt;
   uint16     // Number of battery bars&lt;br /&gt;
   uint16     // Battery type&lt;br /&gt;
   uint16     // Temperature, in kelvin&lt;br /&gt;
   uint16     // Battery capacity &lt;br /&gt;
   uint16     // Battery impedance (mOhm)&lt;br /&gt;
   uint16     // Present value of v_bat_full_level&lt;br /&gt;
   uint16     // Present value of v_bat_low_ths_mv&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
   uint16     unknown8;&lt;br /&gt;
   uint16     unknown9;&lt;br /&gt;
   uint16     // Load current estimated by Batmon4 (uA)&lt;br /&gt;
   uint16     unknown10;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The “Instantaneous battery voltage (mV)” field’s observed values have a certain regular spacing indicating a linear function of some integer value with a smaller range, presumably retu adc register #8.  If it is indeed from that register, then note there is a non-zero offset involved: from memory, one function that gives values consistent with the set of values observed and that somewhat matches observations of both fields (unfortunately with non-negligible delay between sampling the two so far) is mV = 2252.361 + 2.81361 * adc#8 (where the multiplier is fairly accurate if I&#039;ve correctly remembered it, but the constant could be out by some multiple of 2.81361).  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
The “Battery monitor check voltage (mV)” field has similar values to the “Instantaneous battery voltage (mV)” field, but without obvious regular spacing.  I don&#039;t know how it&#039;s calculated.  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
== Some BULK1 message (0x43, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK1_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk1_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Elapsed model time (min)&lt;br /&gt;
   uint16     // Tx-Off battery voltage (mV)&lt;br /&gt;
   uint16     // Tx-On battery voltage (mV)&lt;br /&gt;
   uint8      // Battery power state&lt;br /&gt;
   uint8      //  Batmon4 internal flags2&lt;br /&gt;
   uint8      // Batmon4 internal flags3&lt;br /&gt;
   uint8      // Charging method&lt;br /&gt;
   uint16     // Present Phi value (mV)&lt;br /&gt;
   uint16     // Present Delta Phi value (mV)&lt;br /&gt;
   uint8      // Charging mode &lt;br /&gt;
   uint8      // Previous charging mode &lt;br /&gt;
   uint8      // Charger type&lt;br /&gt;
   uint8      // Previous charger type&lt;br /&gt;
   uint16     // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint8      // Number of charger checks (0-9) ?&lt;br /&gt;
   uint8      // Charger recognition state&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     // Instantaneous charger current (mA)&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     // Charging time (min)&lt;br /&gt;
   uint16     // Average Vchar (mV)&lt;br /&gt;
   uint16     // Equivalent DC charger current (mA) &lt;br /&gt;
   uint8      // Battery full flag (0 or 1)&lt;br /&gt;
   uint8      // HW Cha PWM value L ??&lt;br /&gt;
   uint8      // Cha PWM value L ??&lt;br /&gt;
   uint8      unknown6;&lt;br /&gt;
   uint16     // Open switch battery voltage (mV)&lt;br /&gt;
   uint16     // Closed switch battery voltage (mV)&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK2 message (0x44, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK2_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk2_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Conf. battery footprint&lt;br /&gt;
   uint16     // Conf. minimum standby current (mA)&lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Safety level) &lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Empty)&lt;br /&gt;
   uint16     // Configured number of battery bars&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other information about battery life =&lt;br /&gt;
&lt;br /&gt;
Some battery-related information is also available from retu adc registers (which in turn are available via ioctl&#039;s on /dev/rutu: see retu-adc source).&lt;br /&gt;
&lt;br /&gt;
It&#039;s said that register 3 shows whether charging is occurring: with value 0 meaning &amp;quot;not being charged&amp;quot;, while &amp;quot;values 0xff and above&amp;quot; are an indication of the voltage being applied for charging.&lt;br /&gt;
&lt;br /&gt;
Register 8 apparently indicates battery voltage.  See the note above about “instantaneous battery voltage (mV)” for how it might correspond to one measure of voltage.&lt;br /&gt;
&lt;br /&gt;
Note that this value can fluctuate a lot when the device is in use, but when idle it gets a good fit to the curve adc#8 = 438.3 + exp(p0 + p1*t) - exp(n0 + n1*t) where t is time (or more generally charge used or remaining), and p0,p1,n0,n1 are constants.  (I forget the values I found for them, but in any case it would be good to fit for them again once more data is on hand.)&lt;br /&gt;
&lt;br /&gt;
To invert this function to find idle time remaining (on assumption that the device was idle when the register was read), first see whether the adc#8 value is above or below 438.3, which tells you which exponential is dominant, and approximate the other exponential with a constant 3 (or a straight line if you like); can iterate and update this approximation for the neighbourhood of the solution found by the previous iteration.  -- pjrm&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23714</id>
		<title>Mer/Documentation/BME Protocol</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23714"/>
		<updated>2009-06-12T04:51:37Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: /* Some BULK0 message (0x42, 0x00) */ Add information on &amp;quot;instantaneous battery voltage&amp;quot; field.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state. &lt;br /&gt;
&lt;br /&gt;
Existing code:&lt;br /&gt;
* Dummy server: https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&amp;amp;root=dsm&amp;amp;view=markup , released as LGPL 2.1.  (Bug: The server shouldn&#039;t send a status word before sending the response struct.)&lt;br /&gt;
* Simple command-line client written based on this web page: http://bowman.infotech.monash.edu.au/~pmoulder/bme-client.c .  (GPLv2+, assuming that the text on this web page is compatible with that license.)&lt;br /&gt;
&lt;br /&gt;
General protocol:&lt;br /&gt;
&lt;br /&gt;
* UNIX socket connection to /tmp/.bmesrv&lt;br /&gt;
* Client: send(&#039;BMentity&#039;)&lt;br /&gt;
* Server: send(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
After handshake:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    uint16      type, subtype;&lt;br /&gt;
} BMEHeader;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
types so far (NAME, (type, subtype)):&lt;br /&gt;
&lt;br /&gt;
== EM_BATTERY_INFO_REQ (0x06, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BATTERY_INFO_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_battery_info_reply {&lt;br /&gt;
    uint32      a;&lt;br /&gt;
    uint32      flags;&lt;br /&gt;
    uint16      c;&lt;br /&gt;
    uint16      d;&lt;br /&gt;
    uint16      temp;   // Battery temperature measured in Kelvin &lt;br /&gt;
    uint16      f;&lt;br /&gt;
    uint16      g;&lt;br /&gt;
    uint16      h;&lt;br /&gt;
    uint16      i;&lt;br /&gt;
    uint16      j;&lt;br /&gt;
    uint16      k;&lt;br /&gt;
    uint16      l;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK0 message (0x42, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     sw_status; // Battery monitor SW status&lt;br /&gt;
   uint16     instaneous_battery_voltage; // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint16      // Remaining standby time to battery low (mins)&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     unknown6;&lt;br /&gt;
   uint16     // Battery monitor check voltage (mV)&lt;br /&gt;
   uint16     // Battery low warning interval counter&lt;br /&gt;
   uint16     // Double median filtered battery voltage&lt;br /&gt;
   uint16     // Initial battery monitor voltage (mV)&lt;br /&gt;
   uint16     // Time per battery bar (mins)&lt;br /&gt;
   uint16     // DMF voltage sampled at first battery low (mV)&lt;br /&gt;
   uint32     // Average phone current (uA)&lt;br /&gt;
   uint16     // Most recent battery charge condition (mAh)&lt;br /&gt;
   uint16     // Lowest TX-Off voltage (mV)&lt;br /&gt;
   uint16     // Lowest TX-On voltage (mV)&lt;br /&gt;
   uint16     // Largest TX-Off/On voltage difference (mV)&lt;br /&gt;
   uint8      // Battery bar level log mask&lt;br /&gt;
   uint8      // Previous battery bar level&lt;br /&gt;
   uint8      // Battery low reason&lt;br /&gt;
   uint8      // CS state information &lt;br /&gt;
   uint16     // Number of battery bars&lt;br /&gt;
   uint16     // Battery type&lt;br /&gt;
   uint16     // Temperature, in kelvin&lt;br /&gt;
   uint16     // Battery capacity &lt;br /&gt;
   uint16     // Battery impedance (mOhm)&lt;br /&gt;
   uint16     // Present value of v_bat_full_level&lt;br /&gt;
   uint16     // Present value of v_bat_low_ths_mv&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
   uint16     unknown8;&lt;br /&gt;
   uint16     unknown9;&lt;br /&gt;
   uint16     // Load current estimated by Batmon4 (uA)&lt;br /&gt;
   uint16     unknown10;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The “Instantaneous battery voltage (mV)” field’s observed values have a certain regular spacing indicating a linear function of some integer value with a smaller range, presumably retu adc register #8.  If it is indeed from that register, then note there is a non-zero offset involved: from memory, one function that gives values consistent with the set of values observed and that somewhat matches observations of both fields (unfortunately with non-negligible delay between sampling the two so far) is mV = 2252.361 + 2.81361 * adc#8 (where the multiplier is fairly accurate if I&#039;ve correctly remembered it, but the constant could be out by some multiple of 2.81361).  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
The “Battery monitor check voltage (mV)” field has similar values to the “Instantaneous battery voltage (mV)” field, but without obvious regular spacing.  I don&#039;t know how it&#039;s calculated.  -- pjrm.&lt;br /&gt;
&lt;br /&gt;
== Some BULK1 message (0x43, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK1_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk1_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Elapsed model time (min)&lt;br /&gt;
   uint16     // Tx-Off battery voltage (mV)&lt;br /&gt;
   uint16     // Tx-On battery voltage (mV)&lt;br /&gt;
   uint8      // Battery power state&lt;br /&gt;
   uint8      //  Batmon4 internal flags2&lt;br /&gt;
   uint8      // Batmon4 internal flags3&lt;br /&gt;
   uint8      // Charging method&lt;br /&gt;
   uint16     // Present Phi value (mV)&lt;br /&gt;
   uint16     // Present Delta Phi value (mV)&lt;br /&gt;
   uint8      // Charging mode &lt;br /&gt;
   uint8      // Previous charging mode &lt;br /&gt;
   uint8      // Charger type&lt;br /&gt;
   uint8      // Previous charger type&lt;br /&gt;
   uint16     // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint8      // Number of charger checks (0-9) ?&lt;br /&gt;
   uint8      // Charger recognition state&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     // Instantaneous charger current (mA)&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     // Charging time (min)&lt;br /&gt;
   uint16     // Average Vchar (mV)&lt;br /&gt;
   uint16     // Equivalent DC charger current (mA) &lt;br /&gt;
   uint8      // Battery full flag (0 or 1)&lt;br /&gt;
   uint8      // HW Cha PWM value L ??&lt;br /&gt;
   uint8      // Cha PWM value L ??&lt;br /&gt;
   uint8      unknown6;&lt;br /&gt;
   uint16     // Open switch battery voltage (mV)&lt;br /&gt;
   uint16     // Closed switch battery voltage (mV)&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK2 message (0x44, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK2_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk2_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Conf. battery footprint&lt;br /&gt;
   uint16     // Conf. minimum standby current (mA)&lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Safety level) &lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Empty)&lt;br /&gt;
   uint16     // Configured number of battery bars&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other information about battery life =&lt;br /&gt;
&lt;br /&gt;
Some battery-related information is also available from retu adc registers (which in turn are available via ioctl&#039;s on /dev/rutu: see retu-adc source).&lt;br /&gt;
&lt;br /&gt;
It&#039;s said that register 3 shows whether charging is occurring: with value 0 meaning &amp;quot;not being charged&amp;quot;, while &amp;quot;values 0xff and above&amp;quot; are an indication of the voltage being applied for charging.&lt;br /&gt;
&lt;br /&gt;
Register 8 apparently indicates battery voltage.  Note that this value can fluctuate a lot when the device is in use, but when idle it gets a good fit to the curve adc#8 = 438.3 + exp(p0 + p1*t) - exp(n0 + n1*t) where t is time, and p0,p1,n0,n1 are constants.  (I forget the values I found for them, but in any case it would be good to fit for them again once more data is on hand.)&lt;br /&gt;
&lt;br /&gt;
To invert this function to find idle time remaining (on assumption that the device was idle when the register was read), first see whether the adc#8 value is above or below 438.3, which tells you which exponential is dominant, and approximate the other exponential with a constant 3 (or a straight line if you like); can iterate and update this approximation for the neighbourhood of the solution found by the previous iteration.&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23716</id>
		<title>Mer/Documentation/BME Protocol</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Documentation/BME_Protocol&amp;diff=23716"/>
		<updated>2009-05-18T06:25:29Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: Link to a simple client program.  Document a bug in the dummy server.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state. &lt;br /&gt;
&lt;br /&gt;
Existing code:&lt;br /&gt;
* Dummy server: https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&amp;amp;root=dsm&amp;amp;view=markup , released as LGPL 2.1.  (Bug: The server shouldn&#039;t send a status word before sending the response struct.)&lt;br /&gt;
* Simple command-line client written based on this web page: http://bowman.infotech.monash.edu.au/~pmoulder/bme-client.c .  (GPLv2+, assuming that the text on this web page is compatible with that license.)&lt;br /&gt;
&lt;br /&gt;
General protocol:&lt;br /&gt;
&lt;br /&gt;
* UNIX socket connection to /tmp/.bmesrv&lt;br /&gt;
* Client: send(&#039;BMentity&#039;)&lt;br /&gt;
* Server: send(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
After handshake:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    uint16      type, subtype;&lt;br /&gt;
} BMEHeader;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
types so far (NAME, (type, subtype)):&lt;br /&gt;
&lt;br /&gt;
== EM_BATTERY_INFO_REQ (0x06, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BATTERY_INFO_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_battery_info_reply {&lt;br /&gt;
    uint32      a;&lt;br /&gt;
    uint32      flags;&lt;br /&gt;
    uint16      c;&lt;br /&gt;
    uint16      d;&lt;br /&gt;
    uint16      temp;   // Battery temperature measured in Kelvin &lt;br /&gt;
    uint16      f;&lt;br /&gt;
    uint16      g;&lt;br /&gt;
    uint16      h;&lt;br /&gt;
    uint16      i;&lt;br /&gt;
    uint16      j;&lt;br /&gt;
    uint16      k;&lt;br /&gt;
    uint16      l;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK0 message (0x42, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     sw_status; // Battery monitor SW status&lt;br /&gt;
   uint16     instaneous_battery_voltage; // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint16      // Remaining standby time to battery low (mins)&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     unknown6;&lt;br /&gt;
   uint16     // Battery monitor check voltage (mV)&lt;br /&gt;
   uint16     // Battery low warning interval counter&lt;br /&gt;
   uint16     // Double median filtered battery voltage&lt;br /&gt;
   uint16     // Initial battery monitor voltage (mV)&lt;br /&gt;
   uint16     // Time per battery bar (mins)&lt;br /&gt;
   uint16     // DMF voltage sampled at first battery low (mV)&lt;br /&gt;
   uint32     // Average phone current (uA)&lt;br /&gt;
   uint16     // Most recent battery charge condition (mAh)&lt;br /&gt;
   uint16     // Lowest TX-Off voltage (mV)&lt;br /&gt;
   uint16     // Lowest TX-On voltage (mV)&lt;br /&gt;
   uint16     // Largest TX-Off/On voltage difference (mV)&lt;br /&gt;
   uint8      // Battery bar level log mask&lt;br /&gt;
   uint8      // Previous battery bar level&lt;br /&gt;
   uint8      // Battery low reason&lt;br /&gt;
   uint8      // CS state information &lt;br /&gt;
   uint16     // Number of battery bars&lt;br /&gt;
   uint16     // Battery type&lt;br /&gt;
   uint16     // Temperature, in kelvin&lt;br /&gt;
   uint16     // Battery capacity &lt;br /&gt;
   uint16     // Battery impedance (mOhm)&lt;br /&gt;
   uint16     // Present value of v_bat_full_level&lt;br /&gt;
   uint16     // Present value of v_bat_low_ths_mv&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
   uint16     unknown8;&lt;br /&gt;
   uint16     unknown9;&lt;br /&gt;
   uint16     // Load current estimated by Batmon4 (uA)&lt;br /&gt;
   uint16     unknown10;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK1 message (0x43, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK1_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk1_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Elapsed model time (min)&lt;br /&gt;
   uint16     // Tx-Off battery voltage (mV)&lt;br /&gt;
   uint16     // Tx-On battery voltage (mV)&lt;br /&gt;
   uint8      // Battery power state&lt;br /&gt;
   uint8      //  Batmon4 internal flags2&lt;br /&gt;
   uint8      // Batmon4 internal flags3&lt;br /&gt;
   uint8      // Charging method&lt;br /&gt;
   uint16     // Present Phi value (mV)&lt;br /&gt;
   uint16     // Present Delta Phi value (mV)&lt;br /&gt;
   uint8      // Charging mode &lt;br /&gt;
   uint8      // Previous charging mode &lt;br /&gt;
   uint8      // Charger type&lt;br /&gt;
   uint8      // Previous charger type&lt;br /&gt;
   uint16     // Instantaneous battery voltage (mV)&lt;br /&gt;
   uint8      // Number of charger checks (0-9) ?&lt;br /&gt;
   uint8      // Charger recognition state&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
   uint16     // Instantaneous charger current (mA)&lt;br /&gt;
   uint16     unknown5;&lt;br /&gt;
   uint16     // Charging time (min)&lt;br /&gt;
   uint16     // Average Vchar (mV)&lt;br /&gt;
   uint16     // Equivalent DC charger current (mA) &lt;br /&gt;
   uint8      // Battery full flag (0 or 1)&lt;br /&gt;
   uint8      // HW Cha PWM value L ??&lt;br /&gt;
   uint8      // Cha PWM value L ??&lt;br /&gt;
   uint8      unknown6;&lt;br /&gt;
   uint16     // Open switch battery voltage (mV)&lt;br /&gt;
   uint16     // Closed switch battery voltage (mV)&lt;br /&gt;
   uint16     unknown7;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some BULK2 message (0x44, 0x00) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    BMEHeader header;&lt;br /&gt;
    u_int32_t flags;   // Set to 0xFFFFFFFF to get all data&lt;br /&gt;
} BME_EM_BULK2_Req;&lt;br /&gt;
&lt;br /&gt;
struct emsg_bme_bulk2_reply {&lt;br /&gt;
   uint32     unknown1;&lt;br /&gt;
   uint32     unknown2;&lt;br /&gt;
   uint32     unknown3;&lt;br /&gt;
   uint16     // Conf. battery footprint&lt;br /&gt;
   uint16     // Conf. minimum standby current (mA)&lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Safety level) &lt;br /&gt;
   uint16     // Conf. Batmon battery low voltage (Empty)&lt;br /&gt;
   uint16     // Configured number of battery bars&lt;br /&gt;
   uint16     unknown4;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Mer/Releases/0.13testing1&amp;diff=24647</id>
		<title>Mer/Releases/0.13testing1</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Mer/Releases/0.13testing1&amp;diff=24647"/>
		<updated>2009-05-13T06:03:46Z</updated>

		<summary type="html">&lt;p&gt;130.194.69.10: /* Bugs in testing1 */ clarify one of the issues i added yesterday (pjrm)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using these testing images, you&#039;re &#039;&#039;&#039;morally obligated to test them&#039;&#039;&#039; and to edit this page and report -every single bug you find-, no matter if they&#039;re theme flaws, quirks, bugs or crashes. You can optionally also use [https://bugs.maemo.org/enter_bug.cgi?product=Mer bugzilla] , use version 0.13.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please send the bug report urls to mer-chatter (see [[Mer/Awareness]] ) as well and share your bugs, testing experiences.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test master is Meizirkki, and can be found in #mer on irc.freenode.net usually and you can ask him if there&#039;s some specialized areas that need testing. Take [http://wiki.maemo.org/Mer/Sprints/0.13#Component:_Testing these testing things first]. &lt;br /&gt;
&lt;br /&gt;
These images will not be the only ones this week. In N8x0 installer, when it asks for URL=, write URL=http://the.image.intended. Instructions on [[Mer/Releases/0.12]] still apply.&lt;br /&gt;
&lt;br /&gt;
[http://stskeeps.subnetmask.net/mer/0.13-testing1/mer-x86-generic-image-v0.13-testing1.vmdk.zip Mer X86 VMDK]&lt;br /&gt;
&lt;br /&gt;
[http://stskeeps.subnetmask.net/mer/0.13-testing1/mer-x86-generic-image-v0.13-testing1.tar.gz Mer X86 rootfs version]&lt;br /&gt;
&lt;br /&gt;
[http://stskeeps.subnetmask.net/mer/0.13-testing1/mer-armel-n8x0-image-v0.13-testing1.tar.gz Mer N8x0, rootfs version] or http://tinyurl.com/q4vj97&lt;br /&gt;
&lt;br /&gt;
== Bugs in testing1 ==&lt;br /&gt;
&lt;br /&gt;
* Hardware keyboard/slider events on N810 when device is in standby only turns on backlight, and doesn&#039;t unblank the screen.  Touchscreen events work fine in this respect.&lt;br /&gt;
* Touchscreen using xf86-input-tslib does not work (N8x0, SmartQ). Fix will be in testing2 image (redownload image and it should be fixed)&lt;br /&gt;
* Brightness applet makes hildon crash (not always) http://pastebin.ca/1418638&lt;br /&gt;
* Freezing at shutdown if the command is given from the new gui&lt;br /&gt;
* Enhancement: jffs2 images, kernels, etc. &lt;br /&gt;
** Potential fix: Edit kernel-diablo in Maemo:Mer:Devel:HW:N8x0:Devel to include a variant (like -oprofile or such) that is built to sed CONFIG_CMDLINE from &#039;CONFIG_CMDLINE=&amp;quot;root=1f03 rootfstype=jffs2 ro console=tty0 console=ttyMTD5&amp;quot; to:&#039;CONFIG_CMDLINE=&amp;quot;root=1f04 rootfstype=jffs2 init=/sbin/tablet-init ro console=tty0 console=ttyMTD5&amp;quot;&#039;&lt;br /&gt;
* Minor issues:&lt;br /&gt;
** [0.12, not verified to be in 0.13testing1] /etc/init.d/powered produces a message similar to ‘[: 105: false: invalid operator’.  The fix is to change ‘==’ to ‘=’ in all lines of the form ‘[ &amp;quot;$FOO&amp;quot; == &amp;quot;true&amp;quot; ]’.  (Just search for ‘==’ in all init.d scripts.)&lt;br /&gt;
** [0.12, not verified to be in 0.13testing1] Near the top of /usr/sbin/set_dim_and_blank.py is ‘if dim &amp;gt; blank: print &amp;quot;Dim must be &amp;gt;= blank&amp;quot;’; the message should say ‘&amp;lt;=’ rather than ‘&amp;gt;=’.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====x86 VMDK====&lt;br /&gt;
* Text in text fields can not be drag-selected (cursor jumps to start of field instead)&lt;br /&gt;
* Applications installed prompt for folder location but are always stored in Extras&lt;br /&gt;
** Artifact of Fremantle Application Manager i think&lt;br /&gt;
*** (Irrelevant.  It&#039;s a bug)&lt;br /&gt;
* Organize dialog nonresponsive to any input&lt;br /&gt;
* Locale hardcoded to en_GB.utf8 (?) &lt;br /&gt;
** There is a .current-locale feature, needs control panel (+ reboot), look in /usr/bin/start-hildon&lt;br /&gt;
*** the file is ~/.osso/current-locale and it doesn&#039;t work.&lt;br /&gt;
* Terminal menu text is not replaced with localized text - e.g. &amp;quot;webameedit - webamecopy&amp;quot; etc.&lt;br /&gt;
* Terminal toolbar Ctrl button non-functional (try Ctrl + d, Ctrl + h, Ctrl + g, Ctrl + c)&lt;br /&gt;
** Work on including patches in libvte on garage.maemo.org/projects/osso-xterm into vte - there&#039;s some not included yet.&lt;br /&gt;
* Terminal toolbar (likely other) has significanly misaligned background image when selected.&lt;br /&gt;
** Icon sizes are changed in Fremantle, so a theme issue probably&lt;br /&gt;
*** no.  There are no icons on the toolbar.  Screenshot: [http://www.quicksnapper.com/JMarkevich/image/toolbar-bug Toolbar Bug] (this has been a persistent bug in Maemo, though mostly for all python programs, evidently)&lt;/div&gt;</summary>
		<author><name>130.194.69.10</name></author>
	</entry>
</feed>