Compare commits

...

5 commits

6 changed files with 90 additions and 7 deletions

27
PKGBUILD Normal file
View file

@ -0,0 +1,27 @@
# Maintainer: Dymstro <ricardo at dymstro dot nl>
pkgname=nova-chatmix
pkgver=0.1.0
pkgrel=1
arch=('any')
url='https://git.dymstro.nl/Dymstro/nova-chatmix-linux'
license=('0BSD')
depends=('python' 'python-hidapi' 'pipewire' 'libpulse')
makedepends=('git')
source=("$pkgname::git+https://git.dymstro.nl/Dymstro/nova-chatmix-linux.git#tag=v${pkgver}")
sha256sums=('SKIP')
install=nova-chatmix.install
prepare() {
# Change service to point to system bin directory
sed -i 's#%h/\.local/bin#/usr/bin#g' ${pkgname}/nova-chatmix.service
}
package() {
cd "${pkgname}"
install -Dm755 nova-chatmix.py "${pkgdir}/usr/bin/nova-chatmix/nova-chatmix"
install -Dm644 50-nova-pro-wireless.rules "${pkgdir}/usr/lib/udev/rules.d/50-nova-pro-wireless.rules"
install -Dm644 nova-chatmix.service "${pkgdir}/usr/lib/systemd/user/nova-chatmix.service"
install -Dm644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

View file

@ -59,7 +59,7 @@ To be able to run the script as a non-root user, some udev rules need to be appl
Copy `50-nova-pro-wireless.rules` to `/etc/udev/rules.d` and reload udev rules: Copy `50-nova-pro-wireless.rules` to `/etc/udev/rules.d` and reload udev rules:
``` ```
sudo cp 50-nova-pro-wireless.rules /etc/udev/rules.d/ sudo cp 50-nova-pro-wireless.rules /etc/udev/rules.d/50-nova-pro-wireless.rules
sudo udevadm control --reload-rules sudo udevadm control --reload-rules
sudo udevadm trigger sudo udevadm trigger
@ -72,12 +72,12 @@ If you want to run this script on startup you can add and enable the systemd ser
# Create the folder if it doesn't exist # Create the folder if it doesn't exist
mkdir -p ~/.local/bin mkdir -p ~/.local/bin
# Copy the script to the expected location # Copy the script to the expected location
cp -i nova.py ~/.local/bin cp -i nova-chatmix.py ~/.local/bin/nova-chatmix
# Create systemd user unit folder if it doesn't exist # Create systemd user unit folder if it doesn't exist
mkdir -p ~/.config/systemd/user mkdir -p ~/.config/systemd/user
# Install the service file # Install the service file
cp nova-chatmix.service ~/.config/systemd/user/ cp nova-chatmix.service ~/.config/systemd/user/nova-chatmix.service
# Reload systemd configuration # Reload systemd configuration
systemctl --user daemon-reload systemctl --user daemon-reload
# Enable and start the service # Enable and start the service
@ -94,7 +94,7 @@ This will create 2 virtual sound devices:
``` ```
# You do not need to run this if you installed the systemd unit! # You do not need to run this if you installed the systemd unit!
python nova.py python nova-chatmix.py
``` ```
This command does not generate any output, but the Sonar icon should now be visible on the base station. This command does not generate any output, but the Sonar icon should now be visible on the base station.
@ -113,7 +113,7 @@ I am on MCU firmware version `01.29.27` and DSP firmware version `00.03.82`.
### Protocol description ### Protocol description
See `nova.py` for a commented example implementation. See `nova-chatmix.py` for a commented example implementation.
The controls and data output are on USB Interface 4 (`bInterfaceNumber=4`). This interface has 2 endpoint, 1 for sending data (`0x04`) and 1 for receiving data (`0x84`). The controls and data output are on USB Interface 4 (`bInterfaceNumber=4`). This interface has 2 endpoint, 1 for sending data (`0x04`) and 1 for receiving data (`0x84`).

6
nova-chatmix.install Normal file
View file

@ -0,0 +1,6 @@
post_install() {
udevadm control --reload-rules
udevadm trigger
echo "==> To enable nova-chatmix for your user, run:"
echo " systemctl --user enable --now nova-chatmix"
}

View file

@ -4,9 +4,8 @@ After=pipewire.service pipewire-pulse.service
Wants=network-online.target Wants=network-online.target
[Service] [Service]
Restart=no
Type=simple Type=simple
ExecStart=%h/.local/bin/nova.py ExecStart=%h/.local/bin/nova-chatmix
Restart=on-failure Restart=on-failure
[Install] [Install]

51
nova-chatmix.spec Normal file
View file

@ -0,0 +1,51 @@
Name: nova-chatmix
Version: 0.1.0
Release: 1%{?dist}
Summary: ChatMix Implementation for the SteelSeries Arctis Nova Pro Wireless headset
License: 0BSD
URL: https://git.dymstro.nl/Dymstro/nova-chatmix-linux
Source0: %{name}-%{version}.tar.gz
BuildRequires: systemd-rpm-macros
Requires: python3,python3-hidapi,pipewire,pulseaudio-utils
BuildArch: noarch
%description
ChatMix Implementation for the SteelSeries Arctis Nova Pro Wireless headset
%prep
%setup -qc
# Change service to point to system bin directory
sed -i 's#%h/\.local/bin#%{_bindir}#g' nova-chatmix.service
%install
install -Dm 0755 nova-chatmix.py %{buildroot}/%{_bindir}/nova-chatmix
install -Dm 0644 50-nova-pro-wireless.rules %{buildroot}/%{_libdir}/udev/rules.d/50-nova-pro-wireless.rules
install -Dm 0644 nova-chatmix.service %{buildroot}/%{_libdir}/systemd/user/nova-chatmix.service
%post
udevadm control --reload-rules
udevadm trigger
%systemd_user_post nova-chatmix.service
%preun
%systemd_user_preun nova-chatmix.service
%postun
%systemd_user_postun_with_restart nova-chatmix.service
%systemd_user_postun nova-chatmix.service
%files
%license LICENSE
%doc README.md
%{_bindir}/nova-chatmix
%{_libdir}/udev/rules.d/50-nova-pro-wireless.rules
%{_libdir}/systemd/user/nova-chatmix.service
%changelog
* Sat Aug 16 2025 Ricardo <ricardo@dymstro.nl>
- Release 0.1.0