Difference between revisions of "X728-script"

From Geekworm Wiki
Jump to navigation Jump to search
 
(No difference)

Latest revision as of 15:25, 13 September 2024

Overview

This is script installation tutorial for X728 shield, it will replace X728 Software installation tutorial, although X728 Software installation tutorial is still available, but we strongly recommend that you use this script tutorial, which simplifies the installation process and reduces dependencies on third-party python libraries.

Now we think you have successfully flashed the OS Image into Micro SD and and power on the device, and you have also completed the operations such as creating new user required in some OS. You need to perform the following operations in Terminal.


[Update]:

1. Use gpiod instead of obsolete interface

2. The script now supports the Raspberry Pi OS BOOKWORM version. You just need to uninstall the original script and reinstall it. Please refer to the following:

OPen ternimal window, then run the following command:

mv x728-script x728-script-old
git clone https://github.com/geekworm-com/x728-script
cd x728-script
chmod +x *.sh
./uninstall.sh

Then just follow the installation process below.

3. The current installation script also supports Raspberry Pi 5 hardware.

OS that has been tested

  • Raspbian
  • DietPi
  • Manjaro
  • Ubuntu
  • myNode
  • Umbrel
  • Volumio
  • RetroPie
  • Twister

Install

Please follow the steps below:

Enable I2C

Reter to How to enable I2C

NOTE: sample/x728-v2.x-bat.py or sample/x728-v1.x-bat will run with error if you don't enable I2C.

Check & review I2C address:

pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --   

Explaination:

#36 - the address of the battery fuel gauging chip
#68 - the address of the RTC chip

Install gpiod package

sudo apt install -y gpiod

Clone the script

git clone https://github.com/geekworm-com/x728-script

cd x728-script
chmod +x *.sh

PS: For some OS such as 'Raspberry Pi OS Lite', the git tool is not installed by default, if you get an error like error: -bash: git: command not found, please run the following command to install the git tool.

sudo apt install -y git

Configuring Different GPIO Chip for Raspberry Pi 5 hardware

If you are NOT USING Raspberry 5 hardware, skip this step,or run the following command to set differnt chip number.

PS: Since 2024-09-02, Raspberry Pi has finally unified the gpipchip to 0 on all Raspberry Pis(Pi, 0, 1, 2, 3, 4, 5). Previously, the gpiochip on the Raspberry Pi 5 was 4.

So we comment out the following command line.

#sed -i 's/xPWR.sh 0 5 12/xPWR.sh 4 5 12/g' x728-pwr.service

Create the x728-pwr service

x728-pwr service will be responsible for power management and hardware safe shutdown.

sudo cp -f ./xPWR.sh                    /usr/local/bin/
sudo cp -f x728-pwr.service             /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable x728-pwr
sudo systemctl start x728-pwr

Now, if you press and hold the onboard switch for 3 seconds, then the blue LED will flash slowly and the shutdown is going then all LEDs will be off until the device is completely powered off.

Prepair software shutdown script

1. Prepair xSoft.sh command.

sudo cp -f ./xSoft.sh                /usr/local/bin/

2. Then create a x728off alias command to execture safe shutdown command.

  • for x728 v2.5 v2.3 v2.2 v2.1 v2.0
echo "alias x728off='sudo /usr/local/bin/xSoft.sh 0 '''26''' '" >>   ~/.bashrc
  • for x728 v1.2 v1.3
echo "alias x728off='sudo /usr/local/bin/xSoft.sh 0 '''16''' '" >>   ~/.bashrc
PS: The difference between them is that different GPIO pins are used for shutdown

3. Then run the following command to make the .bashrc file take effect

source ~/.bashrc

4. Then you can run x728off to execute software shutdown as follows

x728off

Uninstall

Run the following command to uninstall all:

./uninstall.sh

Test safe shutdown

Software safe shutdown command:

x728off

DON'T run the 'shutdown' linux command to shut down, otherwise the power of x728 shield will not be shut down.

Hardware safe shutdown operation:

You can verify the safety switch through the onboard switch, press and hold the switch for 3 seconds, then the blue LED will flash slowly and the shutdown is going then all LEDs will be off until the device is completely powered off.

  • press on-board button switch 1-2 seconds to reboot
  • press button switch 3 seconds to safe shutdown,
  • press 7-8 seconds to force shutdown.

Sample Files

The example programs are only suitable for advanced players, and you can construct your own usage scenarios according to the example programs.

[PS]

The old example code uses the RPi.GPIO library, which is currently not supported in kernel 6.6.x, so you may encounter an error when running the following code

sudo python3 sample/x728-v2.x-plsd.py

Note that you need to provide a different gpiochip number on Pi 0,1,2,3,4 (0) and Pi 5 (4).

We recommend that you change your example program to use the libgpiod library, and libgpiod is officially recommended, and we also provide ONLY ONE example using the libgpiod library (x728-v2.x-plsd-gpiod.py), which you can run as follows:

sudo python3 sample/x728-v2.x-plsd-libgpiod.py

For other example programs that use the RPi.GPIO library, it is recommended that you change to the libgpiod version if it runs incorrectly.

In fact, you can change those sample program to shell

Each example program demonstrates a different function:

x728-v2.x-bat.py: Script to read battery power and voltage;

cd ~x728-script
sudo python3 sample/x728-v2.x-bat.py

x728-v2.x-pld.py: Script to AC Power supply loss dection

cd ~x728-script
sudo python3 sample/x728-v2.x-pld.py

x728-v2.x-asd.py: Script to Auto shutdown when the battery voltage is lower than a certain specified value

cd ~x728-script
sudo python3 sample/x728-v2.x-asd.py

PS:

1. All sample python files maybe depends on the third-party python library `Rpi.GPIO`. In the official Raspberry Pi OS and most third-party OS, this library is installed by default. If you run this file and get some errors, try to run the following command to install the Rpi.GPIOy library.

sudo apt-get install -y python3-smbus python3-rpi.gpio

Or you can refer to How to Install RPi.GPIO Python Library

2. The sample file based on the version number is just because different versions of X728 shield use different GPIOs, they are basically the same. You can use a file comparison tool to view it, if you get it wrong, most likely you are using the wrong version of the sample file. You can refer to X728 hardwar to check the PIN occupancy of X728 shield.

3. The sample program is only to demonstrate how to use the advanced functions of the shield, we do not provide the development function of the sample program.

Set and Read the RTC time

Refer to How to enable RTC

How to Use GPIO16 to control battery charging

1. This feature is only newly added from Version 2.5

2. This feature is only suitable for advanced players, if you are not familiar with Linux, we do not recommend you to use this feature. For beginners, it is enough to short the 'CHG Ctrl' so that the X728 v2.5 shield will automatically charge when the power adapter is connected

If you want to control battery charging through GPIO, please refer to the instructions below:

"CHG Ctrl" - Short : battery automatic charging when powe adapter connected
"CHG Ctrl" - Open : GPIO16 output stays high: Charging enabled, GPIO16 output stays low : Charging disabled
# Sample shell command

GPIO=16

# Read the /sys/kernel/debug/gpio file to get the actual GPIO pin
GPIO=$(cat /sys/kernel/debug/gpio | grep "GPIO$GPIO" | awk -F'gpio-' '{print $2}' | awk -F' ' '{print $1}')
echo "$GPIO" > /sys/class/gpio$GPIO/export
echo "out" > /sys/class/gpio/gpio$GPIO/direction

# Enable charging
echo "1" > /sys/class/gpio/gpio$GPIO/value

# Disable charging
echo "0" > /sys/class/gpio/gpio$GPIO/value

Support

Email: support@geekworm.com

FAQ

Q: How to login volumio via SSH?

1. Enable SSH:

Visit http://volumio.local/dev/, then click ENABLE SSH button

2. URL connection is IP address, and the default user name is volumio, default password is volumio

Q: How to login to Umbrel via SSH? A: ssh umbrel@umbrel.local (or ssh umbrel@). the default user name is umbrel, default password is moneyprintergobrrr
Q: How to login to myNode via SSH? A: URL connection is IP address, and the default user name is admin, default password is bolt
Q: How to login to DietPi via SSH? A: URL connection is IP address, and the default user name is root, default password is dietpi
Q: Is LibreELEC supported? A: TODO

Other resource

Return to X728 or X728-hardware


Add your comment
Geekworm Wiki welcomes all comments. If you do not want to be anonymous, register or log in. It is free.


Anonymous user #9

13 days ago
Score 0++

@Lisa it does, i found a way to reprogramm "x728-v2.x-plsd-gpiod.py" and save it in "sudo cp -f ./x728-v2.x-plsd-gpiod.py /usr/local/bin/"

  1. !/usr/bin/env python

import gpiod import time import subprocess

  1. Define the chip and lines

chipname = "gpiochip0" # Please use gpiochip0 if using Raspberry Pi 4/3 hardware

  1. chipname = "gpiochip4" # Please use gpiochip4 if using Raspberry Pi 5 hardware

line_offset = 6 out_line_offset = 26

  1. Open the GPIO chip

chip = gpiod.Chip(chipname)

  1. Get the input line

line = chip.get_line(line_offset) line.request(consumer="my_program", type=gpiod.LINE_REQ_EV_BOTH_EDGES)

  1. Get the output line

out_line = chip.get_line(out_line_offset) out_line.request(consumer="my_program", type=gpiod.LINE_REQ_DIR_OUT)

def print_event(event): if event.type == gpiod.LineEvent.RISING_EDGE: print("---AC Power Loss OR Power Adapter Failure---") print("Shutdown in 5 seconds") time.sleep(5)

out_line.set_value(1) time.sleep(3) out_line.set_value(0)

  1. Perform safe shutdown

subprocess.run(["sudo", "shutdown", "-h", "now"]) elif event.type == gpiod.LineEvent.FALLING_EDGE: print("---AC Power OK, Power Adapter OK---")

try:

  1. Wait for events indefinitely

while True: event = line.event_wait() if event: event = line.event_read() print_event(event) except KeyboardInterrupt: print("Exiting...") finally: chip.close()

than just create a service.unit and save it in: sudo cp -f ./safe_shutdown.service /lib/systemd/system/

[Unit] Description=Run Python Power Management Daemon

[Service] Type=simple ExecStart=/usr/bin/python3 /usr/local/bin/x728-v2.x-plsd-gpiod.py Restart=always

User=root Group=root

[Install] WantedBy=multi-user.target

sudo systemctl daemon-reload sudo chmod +x /usr/local/bin/xPWR.sh sudo chmod +x /usr/local/bin/x728-v2.x-plsd-gpiod.py sudo systemctl enable xPWR sudo systemctl enable x728-v2.x-plsd-gpiod.py sudo systemctl start xPWR sudo systemctl start x728-v2.x-plsd-gpiod.py

Now everybody can use the raspberry with something you switch off to turn the raspberry off, for example a screen.

Anonymous user #10

14 days ago
Score 0++

Hi, followed install on a Pi4 with Bookworm. All seems to work until you test the soft shut down. It says shutting down in 2 seconds but doesn’t shutdown.

Any ideas what to do to fix this or how to problem solve?

Thanks

Lisa

12 days ago
Score 0++

Hi,Which version are you using? please check if the script was installed successfully?

Software safe shutdown command: x728off

DON'T run the 'shutdown' linux command to shut down.

You can verify the safety switch through the onboard switch, press and hold the switch for 3 seconds, then the blue LED will flash slowly and the shutdown is going then all LEDs will be off until the device is completely powered off.

If the problem still does not appear after checking the above steps, please contact us by email and tell us your order number.<support@geekworm.com>

Anonymous user #9

20 days ago
Score 0++

Hello,

is there a way to set the X728 V2.3s scripts so that after a power loose the raspberry shuts down safely after a set time? That would be the function i would need the X728 for. Thx

Lisa

20 days ago
Score 0++
Hello, X728 does not support that.

Anonymous user #8

3 months ago
Score 0++
I have the chg en open, assumingly not charging, working normally with 5V power adapter, still the battery capacity drops rapidly, 1-2 %point per day. Is this normal? What drains the battery so fast?

Lisa

3 months ago
Score 0++
Hi,This is normal, and the battery will discharge when it is left idle.

Anonymous user #6

4 months ago
Score 0++
Hi. I am suing this device with Orange Pi 5+. But the I2C does not work. Can anyone guide?

Lisa

4 months ago
Score 0++
Hello,The X728 is designed for the Raspberry Pi and we have not tested it with the Orange Pi.

Anonymous user #6

3 months ago
Score 0++
Okay. Can you provide any sort of idea of what could be the potential reason since Raspberry pi and Orange pi are identical in so many ways?

Lisa

3 months ago
Score 0++
Sorry, we haven't tested it with Orange Pi and can't offer any recommendations.

Anonymous user #5

11 months ago
Score 0++
The battery indicator lights do not light up. If I remove the batteries, then plug in the AC power, all 4 will light up, then the 100% light will blink a couple of times, then all lights will go out.

Anonymous user #5

11 months ago
Score 0++
Can anybody help?

Walker

11 months ago
Score 0++
Hi, which version of x728 are you using?

Anonymous user #5

11 months ago
Score 0++
Version 2.5

Walker

11 months ago
Score 0++
Hello, you can contact us via our email: support@geekworm.com we will do our best to solve your problem(By the way, provide your order number)

Anonymous user #5

11 months ago
Score 0++
When I get to the part where you are supposed to check and review the i2c address, the x278 doesn't show up. If I skip that step, and try to clone the script github asks for a username and password.

Walker

11 months ago
Score 0++
Hi, please see our FAQ: https://wiki...8-script#FAQ

Anonymous user #4

12 months ago
Score 0++

I'm attempting to configure an X728 v2.5 to automatically charge the battery and start the Raspberry Pi automatically when power is restored. I have shorted both the "Auto ON" and "CHG EN" and then with the unit powered off, I remove the batteries and then replace them. The result is that everything works as expected the first time power is restored, the Pi starts automatically and the battery is charging. On subsequent attempts, there is an immediate flicker on the Pi but it doesn't actually start until I press the blue button switch on the X728.

I also have an older X728 v2.3 that is working as expected, starts the Pi automatically when power is applied and charges the battery automatically. On this one, I have only shorted the "Auto ON".

Is there something else that needs to be done on v2.5 to get the anticipated results?

Anonymous user #4

12 months ago
Score 0++

I was able to program around the firmware issue by removing the short for the "CHG EN" and adding a function to my python script that started charging when capacity dropped below 97% and stopped charging when capacity was at 100% or greater.

Just wondering why I was forced to do that when according to the documentation, I should have been able to do it from the hardware side.

Walker

12 months ago
Score 0++
x728 v2.5 just in x728 v2.3 based on the addition of Adds battery charging control via GPIO16, other features are not changed, if your X728 V2.3, can work properly, hit your expected results, it is reasonable to say that the X728 V2.5 can also meet the requirements!

Anonymous user #4

12 months ago
Score 0++
So what is the expected result on a v2.5 when shorting both "Auto ON" and "CHG EN"? I'm trying to understand the appropriate hardware configuration on a v2.5 to get it to auto start and auto charge without programming. I would agree that it would be reasonable to expect the v2.5 to be able to meet the requirement. Your answer seems to be dodging the actual question.

Walker

12 months ago
Score 0++
Hello, my answer may not be so professional, please understand, if possible, I hope you contact our technical support at : support@geekworm.com

Anonymous user #7

3 months ago
Score 0++
I have this exact same problem and it's driving me crazy... Makes me think there are other reliability issues with all their products. Looking for something safer.

Anonymous user #8

3 months ago
Score 0++

Hi!

I experienced also some strange behavior. Shorting Chg En charges the batteries very fast to 100%, and then it goes down to 93% in couple of hours and then it will be recharged again and repeats. Very fast cycle, I think it kills the batteries very fast. If I don't short, the batteries go down from 100% to 95% in a night time, so it is also very fast. I assumed that if the board is powered, the batteries remain intact and keep capacity for months or so.

What I found out is that the GPIO16 is not exported by default, so I think the board doesn't find the value of the non-existing file, not 0 nor 1, and this let the board drain the batteries somehow. If I export it as a oneshot service at boot, and put the value 0 as it is above as a sample shell .sh file (charing disabled), then I have the 100% now more than one an a half day stable. I expect it to stay so.

Can anybody confirm that it is the correct usage for the v2.5? I mean that the hardware jumper cannot work correctly without exporting and setting the pin 16 by software at boot?

Thank for an answer in advance!

Anonymous user #8

3 months ago
Score 0++
Only one more question: if the set is -> "CHG Ctrl" - Open : GPIO16 output stays high: Charging enabled, is it also a battery automatic charging, as if the jumper would be shorted? Or I have to set 0 after the batteries are fully recharged, otherwise it remains on constant charging?

Anonymous user #3

12 months ago
Score 0++
Still no legit firmware? Absolute garbage of a product.

Walker

12 months ago
Score 0++
Hello, have you encountered any unresolved issues?

Anonymous user #2

14 months ago
Score 0++

Software safe shutdown command is not safe! It does look like it only cuts power to the pi without a correct shutdown.

Noticed it only after dataloss...

Harry

14 months ago
Score 0++

Hi,

Refer to X708#Working_principle,

Anonymous user #1

14 months ago
Score 0++
It says it was tested with ubuntu, but it does not work with ubuntu, the system does not have the sys/class/gpio folder in its filesystem.

Walker

14 months ago
Score 0++
Hello, we tested with ubuntu, can you explain your problem in detail via email? , you can contact us via our email: support@geekworm.com we will do our best to solve your problem