/LiFePO4wered-Pi

Access library, command line tool and daemon for the LiFePO4wered/Pi module

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

LiFePO4wered-Pi

Access library, command line tool and daemon for the LiFePO4wered/Pi+ and legacy LiFePO4wered/Pi and LiFePO4wered/Pi3 modules

Installation

Starting from a fresh Raspbian image, first install the build-essential, git and python packages:

sudo apt-get -y install build-essential git python

In a directory where you keep source code, clone the LiFePO4wered-Pi repository from GitHub:

git clone https://github.com/xorbit/LiFePO4wered-Pi.git

Get in to the source code directory:

cd LiFePO4wered-Pi/

Build the code:

./build.py

And install it:

sudo ./INSTALL.sh

That's it! You may need to restart for some configuration changes to take effect.

CLI

The lifepo4wered-cli tool provides convenient access to the LiFePO4wered device's I2C registers. Run it without parameters to get help information:

lifepo4wered-cli

To get the current battery voltage in millivolts, try:

lifepo4wered-cli get vbat

To set the wake up time to an hour, run:

lifepo4wered-cli set wake_time 60

To set the auto-boot flag to make the Pi run whenever there is power to do so, run:

lifepo4wered-cli set auto_boot 1

To make this change permanent by saving it to flash, run:

lifepo4wered-cli set cfg_write 0x46

The 0x46 value is a magic key to allow config flash writes.

Adjusting some of the register values can cause problems such as not being able to turn on the system using the touch button. To prevent permanently bricking the LiFePO4wered device, always test your changes thoroughly before writing them to flash. If you made a change that makes your LiFePO4wered device not work correctly, and it is not written to flash, you can undo it by unplugging the LiFePO4wered device and removing the LiFePO4 cell from the battery holder for a couple of seconds.

The user running the lifepo4wered-cli tool needs to have sufficient permissions to access the I2C bus. On Raspbian, the pi user by default can access the bus because it is in the i2c group. If you run as a different user, you either need to add this user to the i2c group or run the tool with sudo. On other distributions, a different group name may be used. You can check the owner and group of the I2C device with:

ls -l /dev/i2c-1

The command line tool returns the following negative values to indicate error conditions:

Return value Condition
-1 Could not access the LiFePO4wered device to perform the specified operation. Usually this condition is caused by insufficient privileges when trying to access the I2C bus. Trying to run the command as root or with sudo to fix the problem. When writing settings, this value is also returned if a register is not writable.
-2 The I2C bus could be accessed and the operation is valid, but communication with the LiFePO4wered device failed. After trying several times (20 by default), the I2C bus transaction could not be completed successfully. This happens if the LiFePO4wered device is not physically present or if something (possibly another HAT) is preventing the I2C bus from operating correctly.

Check out the product brief for the LiFePO4wered/Pi+ or legacy LiFePO4wered/Pior LiFePO4wered/Pi3 devices for a complete list of registers and options available in each product.