DJI Phantom 4 Intelligent Flight Battery
Jump to navigation
Jump to search
Battery Management System for the DJI Phantom 4.
Accessing the SMBus using an Raspberry Pi[edit | edit source]
Accessing the SMBus requires dji-firmware-tools by o-gs from GitHub, a disassembled battery, a Raspberry Pi, 3 temporary wires(preferably DuPont wire, male to female) and a soldering iron.
Connect the GND, SDA and SCL pins from the BMS to the Raspberry Pi(Pins SDA1, SCL1, GND). Verify the connection using i2cdetect. The two chips on the BMS will show up as i2c address 0x0B(The BMS) and 0x40.
Clear the PermanentFail BMS State[edit | edit source]
pi@raspberrypi:~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 0b -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Check the fault state of the BMS using
./comm_sbs_bqctrl.py -vvv --dev_address 0x0b monitor BQStatusBitsMA
Unseal and reset the battery:
pi@raspberrypi:~/dji-firmware-tools $ ./comm_sbs_bqctrl.py -vvv --dev_address 0x0b sealing Unseal pi@raspberrypi:~/dji-firmware-tools $ ./comm_sbs_bqctrl.py -vvv --dev_address 0x0b trigger ManufacturerAccess.PermanentFailDataReset pi@raspberrypi:~/dji-firmware-tools $ ./comm_sbs_bqctrl.py -vvv --dev_address 0x0b sealing Seal
After that, the BMS will turn on again, remove the SDA/SCL/GND solder connections, fully charge the battery, and assemble it back together.