Skip to content
Draft

Void #520

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
cd375cb
ez pz translations
adeebshihadeh Dec 25, 2025
dfb1c80
void time
adeebshihadeh Dec 25, 2025
9254ecc
progress
adeebshihadeh Dec 25, 2025
358de40
lil more
adeebshihadeh Dec 26, 2025
cc01ca1
lil more
adeebshihadeh Dec 26, 2025
75e3f1e
lil more
adeebshihadeh Dec 26, 2025
c105d4f
lil more?
adeebshihadeh Jan 5, 2026
3eaad35
loop
adeebshihadeh Jan 5, 2026
8cc2db3
fix leprop
adeebshihadeh Jan 6, 2026
9f26393
ssh always on for now
adeebshihadeh Jan 6, 2026
4164a75
fix tmux
adeebshihadeh Jan 6, 2026
3978f09
fix udev settle timeout
adeebshihadeh Jan 6, 2026
7ac4a17
graphics work
adeebshihadeh Jan 6, 2026
3e39c76
wifi is up
adeebshihadeh Jan 6, 2026
7f6d89f
more wifi
adeebshihadeh Jan 6, 2026
570c10e
dbus
adeebshihadeh Jan 6, 2026
505c73d
real vim
adeebshihadeh Jan 10, 2026
1ef1a2e
fix sound
adeebshihadeh Jan 10, 2026
9a23d72
fix sound
adeebshihadeh Jan 10, 2026
2862753
fix DNS
adeebshihadeh Jan 10, 2026
74de50e
fix time
adeebshihadeh Jan 10, 2026
cd8c44f
ignore the manifest
adeebshihadeh Jan 10, 2026
2e89e67
fix venv and dns
adeebshihadeh Jan 10, 2026
7eb334b
trim off 1GB
adeebshihadeh Jan 10, 2026
1496bee
lil more trimming
adeebshihadeh Jan 10, 2026
02e83ca
fix setup
adeebshihadeh Jan 10, 2026
c8c8694
fix boot timeouts
adeebshihadeh Jan 11, 2026
d673629
fast wifi boot
adeebshihadeh Jan 11, 2026
a7d2e98
remove double udevd
adeebshihadeh Jan 11, 2026
6421812
fix ffmpeg build
adeebshihadeh Jan 11, 2026
62e5a49
custom abctl
adeebshihadeh Jan 11, 2026
f3100d9
cleanup initscripts
adeebshihadeh Jan 11, 2026
3347aa4
capnproto 1.0.2 symlinks
andiradulescu Feb 2, 2026
7bc59d2
bypass libglvnd for EGL
andiradulescu Feb 2, 2026
4db97a4
fix ping capability
andiradulescu Feb 2, 2026
0f631a1
fix motd for Void
andiradulescu Feb 2, 2026
856c10f
journalctl shim
andiradulescu Feb 2, 2026
4d297b5
use Qualcomm OpenCL directly
andiradulescu Feb 2, 2026
8d302c3
compile ffmpeg without opencl
andiradulescu Feb 2, 2026
8704e53
journalctl shim update for loggerd/bootlog format
andiradulescu Feb 6, 2026
520d2a3
adb wip
andiradulescu Feb 7, 2026
05e0ce1
build python
andiradulescu Feb 8, 2026
5bb875e
Revert "build python"
andiradulescu Feb 10, 2026
035d43f
remove redundant /var/log tmpfs mount that broke rsyslogd
andiradulescu Feb 10, 2026
b4c480b
enable lte service, add usbutils for lsusb
andiradulescu Feb 10, 2026
2cfa213
bump numpy to 2.4.2 (fix memory leak)
andiradulescu Feb 10, 2026
9d13385
remove adsprpcd/cdsprpcd (armhf blobs, not needed)
andiradulescu Feb 10, 2026
8f3a3da
remove all armhf (32-bit) blobs from void
andiradulescu Feb 10, 2026
eaa3a94
enable avahi-ssh-publish, fix hostname (NM hostname-mode=none)
andiradulescu Feb 10, 2026
3422493
fix abctl
andiradulescu Feb 11, 2026
25be865
enable power_monitor and power_drop_monitor services
andiradulescu Feb 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*.swp
*.tar.gz
*.tar.xz
*.DS_Store

/logs/
Expand All @@ -17,3 +18,6 @@ edl_config.json
tools/edl_repo/

edk2_tici/
output/system.raw

void/eval/ubuntu-manifest.txt
2 changes: 1 addition & 1 deletion build_kernel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ build_kernel() {
$TOOLS/mkbootimg \
--kernel Image.gz-dtb \
--ramdisk /dev/null \
--cmdline "console=ttyMSM0,115200n8 isolcpus=6,7 quiet loglevel=3 earlycon=msm_geni_serial,0xA84000 androidboot.hardware=qcom androidboot.console=ttyMSM0 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 service_locator.enable=1 androidboot.selinux=permissive firmware_class.path=/lib/firmware/updates net.ifnames=0 dyndbg=\"\"" \
--cmdline "console=ttyMSM0,115200n8 isolcpus=6,7 loglevel=7 earlycon=msm_geni_serial,0xA84000 androidboot.hardware=qcom androidboot.console=ttyMSM0 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 service_locator.enable=1 androidboot.selinux=permissive firmware_class.path=/lib/firmware/updates net.ifnames=0 dyndbg=\"\"" \
--pagesize 4096 \
--base 0x80000000 \
--kernel_offset 0x8000 \
Expand Down
23 changes: 20 additions & 3 deletions flash_system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,21 @@ set -e
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
cd $DIR

# Custom firehose loader with USB 3.0 SuperSpeed support
CUSTOM_LOADER="$DIR/tools/edl_repo/Loaders/qualcomm/factory/sdm845_sdm850_sda845/prog_firehose_ddr_usb3.elf"

# Use custom loader if it exists, otherwise let EDL auto-select
if [[ -f "$CUSTOM_LOADER" ]]; then
LOADER_ARG="--loader=$CUSTOM_LOADER"
echo "Using custom USB 3.0 loader: $CUSTOM_LOADER"
else
LOADER_ARG=""
echo "Custom loader not found, using default loader"
fi

echo "Checking active slot..."
ACTIVE_SLOT=$(tools/edl getactiveslot | grep "Current active slot:" | awk '{print $NF}')
#ACTIVE_SLOT=$(tools/edl getactiveslot | grep "Current active slot:" | awk '{print $NF}')
ACTIVE_SLOT="a"

if [[ "$ACTIVE_SLOT" != "a" && "$ACTIVE_SLOT" != "b" ]]; then
echo "Invalid active slot: '$ACTIVE_SLOT'"
Expand All @@ -14,8 +27,12 @@ fi

echo "Active slot: $ACTIVE_SLOT"
echo "Flashing system_$ACTIVE_SLOT..."
tools/edl w system_$ACTIVE_SLOT $DIR/output/system.img
#tools/edl w system_$ACTIVE_SLOT $DIR/output/system.img $LOADER_ARG

#tools/edl reset $LOADER_ARG

tools/edl reset
fastboot flash system_a $DIR/output/system.img
fastboot --set-active=a
fastboot continue

echo "Flashed system_$ACTIVE_SLOT!"
2 changes: 1 addition & 1 deletion scripts/shell.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#!/usr/bin/env bash
docker run -it --rm agnos-builder:latest /bin/bash
docker run -it --rm void-agnos-builder:latest /bin/bash
93 changes: 93 additions & 0 deletions scripts/usb-ssh.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#!/bin/bash
# USB SSH helper - loops forever, reconnects after reflash
set -e

DEVICE_IP="192.168.7.1"
HOST_IP="192.168.7.2"
NETMASK="24"

find_usb_iface() {
# Look for USB CDC NCM/ECM interfaces from Qualcomm (vendor 05c6)
for iface in /sys/class/net/enx* /sys/class/net/enp* /sys/class/net/usb* /sys/class/net/eth*; do
[ -e "$iface" ] || continue
name=$(basename "$iface")
[[ "$name" == "lo" ]] && continue
[[ "$name" == "eth0" ]] && continue

# Get the USB device path
dev_path=$(readlink -f "$iface/device" 2>/dev/null) || continue
[[ "$dev_path" == *usb* ]] || continue

# Extract the USB device directory (e.g., /sys/devices/.../usb4/4-4)
usb_dev_path=$(echo "$dev_path" | sed 's|\(.*usb[0-9]*/[0-9]*-[0-9.]*\).*|\1|')
if [ -f "$usb_dev_path/idVendor" ]; then
vendor=$(cat "$usb_dev_path/idVendor" 2>/dev/null)
if [ "$vendor" = "05c6" ]; then
echo "$name"
return 0
fi
fi
done
return 1
}

remove_conflicting_ips() {
local correct_iface="$1"
# Remove 192.168.7.x from ALL other interfaces to prevent routing conflicts
for iface in $(ip -o addr show | grep "192\.168\.7\." | awk '{print $2}'); do
if [ "$iface" != "$correct_iface" ]; then
echo "Removing conflicting IP from $iface..."
sudo ip addr del "$HOST_IP/$NETMASK" dev "$iface" 2>/dev/null || true
fi
done
}

configure_iface() {
local iface="$1"
# First remove conflicting IPs from other interfaces
#remove_conflicting_ips "$iface"
# Add IP if not already present
if ! ip addr show dev "$iface" 2>/dev/null | grep -q "$HOST_IP"; then
sudo ip addr add "$HOST_IP/$NETMASK" dev "$iface" 2>/dev/null || true
fi
sudo ip link set "$iface" up 2>/dev/null || true
}

while true; do
echo "Waiting for USB network interface..."

IFACE=""
while [ -z "$IFACE" ]; do
IFACE=$(find_usb_iface) || true
[ -z "$IFACE" ] && sleep 0.5
done

echo "Found USB interface: $IFACE"

# Configure the interface
echo "Configuring $IFACE with $HOST_IP/$NETMASK..."
configure_iface "$IFACE"

# Wait for device to be reachable
echo "Waiting for device at $DEVICE_IP..."
while ! ping -c 1 -W 1 "$DEVICE_IP" &>/dev/null; do
# Check if interface still exists
if [ ! -e "/sys/class/net/$IFACE" ]; then
echo "Interface disappeared, device probably rebooting..."
break
fi
# Re-apply IP config in case NetworkManager stripped it
configure_iface "$IFACE"
sleep 0.5
done

# Only SSH if we got a ping response
if ping -c 1 -W 1 "$DEVICE_IP" &>/dev/null; then
echo "Connecting to comma@$DEVICE_IP..."
ssh -t -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=5 comma@"$DEVICE_IP" || true
echo "SSH session ended."
fi

echo "---"
sleep 1
done
2 changes: 1 addition & 1 deletion sync_openpilot_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if ! command -v "uv" > /dev/null 2>&1; then
fi

cd userspace/uv
curl -sSo openpilot/pyproject.toml https://raw.githubusercontent.com/commaai/openpilot/master/pyproject.toml
#curl -sSo openpilot/pyproject.toml https://raw.githubusercontent.com/commaai/openpilot/master/pyproject.toml

export PYOPENCL_CL_PRETEND_VERSION="2.0" && \
pc="$(python3 -c "import sysconfig;print(sysconfig.get_config_vars('installed_base')[0])")" && \
Expand Down
5 changes: 3 additions & 2 deletions userspace/files/99-gpio.rules
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'find -L /sys/class/gpio/ -maxdepth 2 -exec chown root:gpio {} \; -exec chmod 770 {} \; || true'"
SUBSYSTEM=="gpio", KERNEL=="gpiochip[0]", GROUP="gpio", MODE="660"
# Set permissions on GPIO devices - use udev's built-in mechanism instead of find
SUBSYSTEM=="gpio", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio*", KERNEL=="gpiochip*", GROUP="gpio", MODE="0660"
5 changes: 3 additions & 2 deletions userspace/files/comma-polkit.rules
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// Allow sudo users to control network & modem
// Allow wheel group users to control network & modem
// Note: Void Linux uses "wheel" instead of "sudo" for admin group
polkit.addRule(function (action, subject) {
if ((action.id.startsWith("org.freedesktop.NetworkManager.") ||
action.id.startsWith("org.freedesktop.ModemManager1.")) &&
subject.isInGroup("sudo")) {
subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
2 changes: 1 addition & 1 deletion userspace/files/profile
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export PATH="/usr/local/.cargo/bin:$PATH"
export UV_PYTHON_INSTALL_DIR="/usr/local/uv/python"
export UV_PYTHON_PREFERENCE=only-system
export UV_LINK_MODE=copy
source /usr/local/venv/bin/activate
VIRTUAL_ENV_DISABLE_PROMPT=1 source /usr/local/venv/bin/activate

# custom shims
export PATH="/usr/comma/shims:${PATH}"
Expand Down
2 changes: 1 addition & 1 deletion userspace/files/sshd_config
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# Comma
StrictModes no
AuthorizedKeysFile /data/params/d/GithubSshKeys /tmp/authorized_keys
AuthorizedKeysFile /usr/comma/setup_keys /data/params/d/GithubSshKeys /tmp/authorized_keys
PermitRootLogin no

# What ports, IPs and protocols we listen for
Expand Down
14 changes: 14 additions & 0 deletions userspace/files/usb0.nmconnection
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[connection]
id=usb0
type=ethernet
interface-name=usb0
autoconnect=true

[ethernet]

[ipv4]
method=manual
addresses=192.168.7.1/24

[ipv6]
method=disabled
3 changes: 2 additions & 1 deletion userspace/home/.bash_profile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ export EDITOR='vim'
export VIMINIT='source $MYVIMRC'
export MYVIMRC="~/.vimrc"

source $HOME/.profile
[ -f $HOME/.profile ] && source $HOME/.profile
[ -f $HOME/.bashrc ] && source $HOME/.bashrc

if [ -d "/data/openpilot" ] && [ "$(tmux display-message -p '#{session_name}')" == "comma" ] ; then
cd /data/openpilot
Expand Down
7 changes: 7 additions & 0 deletions userspace/home/.bashrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# .bashrc

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
27 changes: 27 additions & 0 deletions userspace/irsc_util/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Makefile for irsc_util - IPC Router Security Configuration utility

CC ?= gcc
CFLAGS ?= -Wall -Wextra -O2

# For cross-compilation, set CC to aarch64-linux-gnu-gcc
# CC = aarch64-linux-gnu-gcc

TARGET = irsc_util
SRCS = irsc_util.c
OBJS = $(SRCS:.c=.o)

all: $(TARGET)

$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<

clean:
rm -f $(TARGET) $(OBJS)

install: $(TARGET)
install -m 755 $(TARGET) $(DESTDIR)/usr/bin/

.PHONY: all clean install
Loading
Loading