Mer/Documentation/BME Protocol
From Maemo Wiki
This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state.
General protocol, published https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&root=dsm&view=markup , released as LGPL 2.1
- UNIX socket connection to /tmp/.bmesrv
- Client: send('BMentity')
- Server: send('\n')
After handshake:
typedef struct {
uint16 type, subtype;
} BMEHeader;
types so far (NAME, (type, subtype)):
EM_BATTERY_INFO_REQ (0x06, 0x00)
typedef struct {
BMEHeader header;
u_int32_t flags; // Set to 0xFFFFFFFF to get all data
} BME_EM_BATTERY_INFO_Req;
struct emsg_battery_info_reply {
uint32 a;
uint32 flags;
uint16 c;
uint16 d;
uint16 temp; // Battery temperature measured in Kelvin
uint16 f;
uint16 g;
uint16 h;
uint16 i;
uint16 j;
uint16 k;
uint16 l;
};
Some BULK0 message (0x42, 0x00)
typedef struct {
BMEHeader header;
u_int32_t flags; // Set to 0xFFFFFFFF to get all data
} BME_EM_BULK_Req;
struct emsg_bme_bulk_reply {
uint32 unknown1;
uint32 unknown2;
uint32 unknown3;
uint16 sw_status; // Battery monitor SW status
uint16 instaneous_battery_voltage; // Instantaneous battery voltage (mV)
uint16 // Remaining standby time to battery low (mins)
uint16 unknown4;
uint16 unknown5;
uint16 unknown6;
uint16 // Battery monitor check voltage (mV)
uint16 // Battery low warning interval counter
uint16 // Double median filtered battery voltage
uint16 // Initial battery monitor voltage (mV)
uint16 // Time per battery bar (mins)
uint16 // DMF voltage sampled at first battery low (mV)
uint32 // Average phone current (uA)
uint16 // Most recent battery charge condition (mAh)
uint16 // Lowest TX-Off voltage (mV)
uint16 // Lowest TX-On voltage (mV)
uint16 // Largest TX-Off/On voltage difference (mV)
uint8 // Battery bar level log mask
uint8 // Previous battery bar level
uint8 // Battery low reason
uint8 // CS state information
uint16 // Number of battery bars
uint16 // Battery type
uint16 // Temperature, in kelvin
uint16 // Battery capacity
uint16 // Battery impedance (mOhm)
uint16 // Present value of v_bat_full_level
uint16 // Present value of v_bat_low_ths_mv
uint16 unknown7;
uint16 unknown8;
uint16 unknown9;
uint16 // Load current estimated by Batmon4 (uA)
uint16 unknown10;
};