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:
```
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 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
mkdir -p ~/.local/bin
# 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
mkdir -p ~/.config/systemd/user
# Install the service file
cp nova-chatmix.service ~/.config/systemd/user/
cp nova-chatmix.service ~/.config/systemd/user/nova-chatmix.service
# Reload systemd configuration
systemctl --user daemon-reload
# 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!
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.
@ -113,7 +113,7 @@ I am on MCU firmware version `01.29.27` and DSP firmware version `00.03.82`.
### 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`).

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
[Service]
Restart=no
Type=simple
ExecStart=%h/.local/bin/nova.py
ExecStart=%h/.local/bin/nova-chatmix
Restart=on-failure
[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