I have a new hardware device (Ferris Sweep keyboard). It is pre-flashed with the necessary firmware, but isn’t being recognised by the configuration apps (via or Vial). The error messages are:
20:24:21.801
* Failed to open the device.
* Device: DPB Ferris sweep
* Vid: 0xC2AB
* Pid: 0x3939
20:24:21.825
* Received invalid protocol version from device
* Device: DPB Ferris sweep
* Vid: 0xC2AB
* Pid: 0x3939
On a non-NixOS system, I think the following might fix the problem.
export USER_GID=`id -g`; sudo --preserve-env=USER_GID sh -c 'echo "KERNEL==\"hidraw*\", SUBSYSTEM==\"hidraw\", ATTRS{serial}==\"*vial:f64c2b3c*\", MODE=\"0660\", GROUP=\"$USER_GID\", TAG+=\"uaccess\", TAG+=\"udev-acl\"" > /etc/udev/rules.d/99-vial.rules && udevadm control --reload && udevadm trigger'
How do I achieve the same effect in NixOS? I suspect it involves adding services.udev.packages
to my configuration.nix, but I don’t know what to write.
It appears that the package definitions for vial
and via
will create the file /etc/udev/rules.d/92-viia.rules
, which take cares of that.
I had been trying to work in a temporary shell using nix-shell -p via[l]
, which wasn’t working.
So now I added both via
and vial
to environment.systemPackages
and did a nixos-rebuild switch --upgrade
. The file did not appear, and the keyboard is still not found by via or Vial.
I rebooted. The file did not appear, and the keyboard is still not found by via or Vial.
What’s stranger still is that I can run Vial
, but via
is not available – I still have to do nix-shell -p via
to be able to run it.
The system is “seeing” the keyboard…
$ dmesg | grep Ferris
[ 2.546299] usb 7-4: Product: Ferris sweep
[ 2.683786] input: DPB Ferris sweep as /devices/pci0000:40/0000:40:01.1/0000:41:00.0/0000:42:08.0/0000:46:00.3/usb7/7-4/7-4:1.0/0003:C2AB:3939.0001/input/input0
[ 2.735115] hid-generic 0003:C2AB:3939.0001: input,hidraw0: USB HID v1.11 Keyboard [DPB Ferris sweep] on usb-0000:46:00.3-4/input0
[ 2.735263] hid-generic 0003:C2AB:3939.0002: hiddev96,hidraw1: USB HID v1.11 Device [DPB Ferris sweep] on usb-0000:46:00.3-4/input1
[ 2.735384] input: DPB Ferris sweep Mouse as /devices/pci0000:40/0000:40:01.1/0000:41:00.0/0000:42:08.0/0000:46:00.3/usb7/7-4/7-4:1.2/0003:C2AB:3939.0003/input/input1
[ 2.735404] input: DPB Ferris sweep System Control as /devices/pci0000:40/0000:40:01.1/0000:41:00.0/0000:42:08.0/0000:46:00.3/usb7/7-4/7-4:1.2/0003:C2AB:3939.0003/input/input2
[ 2.787151] input: DPB Ferris sweep Consumer Control as /devices/pci0000:40/0000:40:01.1/0000:41:00.0/0000:42:08.0/0000:46:00.3/usb7/7-4/7-4:1.2/0003:C2AB:3939.0003/input/input3
[ 2.787390] hid-generic 0003:C2AB:3939.0003: input,hidraw2: USB HID v1.11 Mouse [DPB Ferris sweep] on usb-0000:46:00.3-4/input2
$ lsusb | grep Ferris
Bus 007 Device 002: ID c2ab:3939 DPB Ferris sweep
Problem was solved by adding the following to my NixOS configuration.
{
services.udev.packages = with pkgs; [
vial
via
];
}