Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Force LF line endings for all shell scripts and debian packaging files
* text=auto

*.sh text eol=lf
*.bash text eol=lf
debian/rules text eol=lf
debian/postinst text eol=lf
debian/postrm text eol=lf
debian/conffiles text eol=lf
debian/control text eol=lf
debian/changelog text eol=lf
debian/copyright text eol=lf
20 changes: 20 additions & 0 deletions build_deb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0
# Copyright (C) 2026 wentywenty
#
# Build RoboParty base deb package

set -e

echo "==> Installing build dependencies..."
sudo apt-get update
sudo apt-get install -y dpkg-dev debhelper devscripts python3

echo "==> Building deb package..."
dpkg-buildpackage -us -uc -b

echo "==> Moving deb to current directory..."
mv ../roboparty-base_*.deb . 2>/dev/null || true

echo "==> Done!"
ls -la roboparty-base_*.deb 2>/dev/null || echo "No .deb file found, check build output above."
8 changes: 8 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
roboparty-base (1.1.1-1) stable; urgency=medium

* Add wifi-reset and hpm-reset systemd services
* Restore debian/conffiles entries
* Move scripts to /opt/roboparty/bin

-- wentywenty <2321901849@qq.com> Thu, 31 Jul 2026 00:00:00 +0800

roboparty-base (1.1.0-1) stable; urgency=medium

* update series udev
Expand Down
2 changes: 2 additions & 0 deletions debian/conffiles
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@
/etc/udev/rules.d/99-ethercat_hpm.rules
/etc/udev/rules.d/99-serial_hipnuc.rules
/etc/udev/rules.d/99-serial_tws.rules
/etc/default/wifi-reset
/etc/default/hpm-reset
9 changes: 9 additions & 0 deletions debian/postinst
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,12 @@ grep -q '@orangepi - memlock unlimited' /etc/security/limits.conf 2>/dev/null ||
udevadm control --reload-rules
udevadm trigger --subsystem-match=tty
udevadm trigger --subsystem-match=net

# Enable and start WiFi reset monitor
systemctl daemon-reload
systemctl enable wifi-reset.service 2>/dev/null || true
systemctl start wifi-reset.service 2>/dev/null || true

# Enable and start HPM reset monitor
systemctl enable hpm-reset.service 2>/dev/null || true
systemctl start hpm-reset.service 2>/dev/null || true
9 changes: 9 additions & 0 deletions debian/postrm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@
set -e

if [ "$1" = "purge" ]; then
systemctl stop wifi-reset.service 2>/dev/null || true
systemctl disable wifi-reset.service 2>/dev/null || true
systemctl stop hpm-reset.service 2>/dev/null || true
systemctl disable hpm-reset.service 2>/dev/null || true
rm -f /etc/systemd/system/wifi-reset.service
rm -f /etc/systemd/system/hpm-reset.service
rm -f /opt/roboparty/bin/wifi-reconnect.sh
rm -f /opt/roboparty/bin/reset_hpm.sh
systemctl daemon-reload
rm -rf /opt/roboparty
rm -f /etc/ld.so.conf.d/roboparty.conf
rm -f /usr/lib/python3/dist-packages/roboparty.pth
Expand Down
26 changes: 19 additions & 7 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -1,26 +1,38 @@
#!/usr/bin/make -f
export DH_VERBOSE = 1

PYTHON_VER := $(shell python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')

%:
dh $@

override_dh_auto_configure:
override_dh_auto_build:
override_dh_auto_test:
override_dh_auto_clean:
override_dh_auto_install:

override_dh_install:
dh_install
install -d debian/roboparty-base/opt/roboparty/lib/python$(PYTHON_VER)/site-packages

install -d debian/roboparty-base/opt/roboparty/lib/python3.10/site-packages
install -d debian/roboparty-base/opt/roboparty/include
install -d debian/roboparty-base/opt/roboparty/bin
install -d debian/roboparty-base/opt/roboparty/share

install -m 644 setup.bash debian/roboparty-base/opt/roboparty/

install -d debian/roboparty-base/etc/ld.so.conf.d
install -m 644 etc/ld.so.conf.d/roboparty.conf debian/roboparty-base/etc/ld.so.conf.d/

install -d debian/roboparty-base/etc/udev/rules.d
install -m 644 etc/udev/rules.d/*.rules debian/roboparty-base/etc/udev/rules.d/

install -d debian/roboparty-base/etc/systemd/system
install -m 644 etc/systemd/system/wifi-reset.service debian/roboparty-base/etc/systemd/system/
install -m 644 etc/systemd/system/hpm-reset.service debian/roboparty-base/etc/systemd/system/

install -m 755 scripts/wifi-reconnect.sh debian/roboparty-base/opt/roboparty/bin/
install -m 755 scripts/reset_hpm.sh debian/roboparty-base/opt/roboparty/bin/

install -d debian/roboparty-base/etc/default
install -m 644 etc/default/wifi-reset debian/roboparty-base/etc/default/
install -m 644 etc/default/hpm-reset debian/roboparty-base/etc/default/
24 changes: 24 additions & 0 deletions etc/default/hpm-reset
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# HPM Reset Monitor default configuration
# See: /etc/systemd/system/hpm-reset.service

# GPIO1_B7 sysfs number on RK3588 (Bank1 * 32 + B(1) * 8 + 7)
RESET_GPIO=47

# Check interval in seconds
CHECK_INTERVAL=2

# Number of consecutive failures before triggering reset
FAIL_THRESHOLD=10

# Reset pulse duration in seconds
RESET_HOLD_TIME=0.5

# 1 = active-high, 0 = active-low
RESET_ACTIVE_HIGH=1

# Wait time after reset in seconds
POST_RESET_WAIT=15

# USB device identification (roboto_usb4can)
HPM_VID=1209
HPM_PID=2323
11 changes: 11 additions & 0 deletions etc/default/wifi-reset
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# WiFi Reset Monitor default configuration
# See: /etc/systemd/system/wifi-reset.service

# Check interval in seconds
CHECK_INTERVAL=30

# Number of consecutive failures before reporting error
FAIL_THRESHOLD=3

# WiFi interface name (set to empty for auto-detection)
WIFI_INTERFACE=wlan0
25 changes: 25 additions & 0 deletions etc/systemd/system/hpm-reset.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[Unit]
Description=RoboParty HPM Reset Monitor (GPIO1_B7 watchdog)
Documentation=https://github.com/Roboparty/roboparty_base
After=multi-user.target

[Service]
Type=simple
EnvironmentFile=/etc/default/hpm-reset
ExecStartPre=/bin/sleep 3
ExecStart=/opt/roboparty/bin/reset_hpm.sh
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=hpm-reset-monitor

# Security hardening
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/sys/class/gpio

[Install]
WantedBy=multi-user.target
22 changes: 22 additions & 0 deletions etc/systemd/system/wifi-reset.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[Unit]
Description=RoboParty WiFi Reset Monitor
Documentation=https://github.com/Roboparty/roboparty_base
After=network.target NetworkManager.service
Wants=NetworkManager.service

[Service]
Type=simple
EnvironmentFile=/etc/default/wifi-reset
ExecStart=/opt/roboparty/bin/wifi-reconnect.sh
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=wifi-reset-monitor

# Security hardening
NoNewPrivileges=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
33 changes: 0 additions & 33 deletions hpm_reset.service

This file was deleted.

Loading
Loading