How to pass the digirig lite through a docker container

I am trying to pass the digirig lite through a docker container on the Raspberry Pi Trixie OS on graywolf.

I have added the following 2 command lines to the docker-configure.yml device:

  - /dev/hidraw0:/dev/hidraw0
  - /dev/snd:/dev/snd

I was successful in passing my USB GPS device and it is reading on Graywolf, but the digirig lite, no luck. I have been fooling around for in for a few days.

This is the complete Docker-compose.yml file I am running:

services:
graywolf:
image: Package graywolf · GitHub
container_name: graywolf
restart: unless-stopped
privileged: true
devices:
- /dev/hidraw0:/dev/hidraw0
- /dev/snd:/dev/snd
- /dev/ttyACM0:/dev/ttyACM0
ports:
- "8080:8080/tcp"
volumes:
- graywolf-data:/data
command: ["-config", "/data/graywolf.db", "-http", "0.0.0.0:8080"]

Any help is appriacted

Thanks

Did you confirm that devices being forwarded belong to Digirig?

If nothing else, see if there is info on forwarding other CM108-based sound card devices or soundcards in general. There is nothing specific about Digirig’s audio codec that would make forwarding any different from other USB soundcard devices.

Please share your solution if found.

I got it up and running. Here is what I put together:

Graywolf + Digirig Lite Setup Guide

To pass a Digirig Lite through to a Docker container running Graywolf (typically on Linux/Raspberry Pi), you need to map both the ALSA sound card and the correct HID device for PTT (since the Digirig Lite uses a C-Media CM108 chip which controls PTT via HID GPIO).

The main issue when passing /dev/hidraw0 is that Linux dynamically assigns hidraw numbers (hidraw0, hidraw1, etc.) based on connection order, meaning hardcoding /dev/hidraw0 often breaks or targets the wrong device after a reboot.

Phase 1: Create a permanent shortcut name for your Digirig

Every time your Pi turns on, it picks a random name for your Digirig (like hidraw0 or hidraw1). We are going to lock in a single name—/dev/digirig-hid—that never changes.

1. Get your Digirig’s ID code

Plug in your Digirig, open your Pi’s terminal screen, and run:

Bash

lsusb

Look for a line that mentions C-Media. You will see an ID code with a colon in the middle, like 0d8c:013c.

  • First part (0d8c) = Vendor ID
  • Second part (013c) = Product ID

(Write your numbers down if they are different!)

2. Make the rule file

Run this command in your terminal:

Bash

sudo nano /etc/udev/rules.d/99-digirig.rules

Paste this exact line into the blank editor screen:

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="013c", SYMLINK+="digirig-hid", MODE="0666"

(If your numbers from Step 1 were different, swap 0d8c and 013c with yours).

· KERNEL=="hidraw*" & SUBSYSTEM=="hidraw": Ensures this rule targets hidraw interfaces.

· ATTRS{idVendor} & ATTRS{idProduct}: Matches your specific hardware.

· SYMLINK+="digirig-hid": Tells Linux to create a static path /dev/digirig-hid.

· MODE="0666": Grants read/write permissions so Docker/non-root users can access it without permission errors.

Save and exit:

  • Press Ctrl + O, then press Enter (saves file).
  • Press Ctrl + X (exits back to terminal).

3. Activate your new shortcut

Run these two commands:

Bash

sudo udevadm control --reload-rules

sudo udevadm trigger

Now unplug your Digirig from the USB port, wait 3 seconds, and plug it back in.

To test if it worked, run:

Bash

ls -l /dev/digirig-hid

Example Output:

lrwxrwxrwx 1 root root 7 Jul 23 22:30 /dev/digirig-hid → hidraw0

If you see text pop up, success! Your permanent shortcut is ready.

Phase 2: Create the Docker Compose File

Now we will build the setup file that tells Docker how to run Graywolf and talk to your radio’s sound and PTT switch.

1. Open a new file editor

Run this command in your terminal:

Bash

sudo nano docker-compose.yml

2. Paste this exact configuration:

services:
  graywolf:
    image: ghcr.io/chrissnell/graywolf:latest
    container_name: graywolf
    restart: unless-stopped
    privileged: true
    group_add:
      - audio
      - plugdev
    devices:
      - /dev/snd:/dev/snd
      - /dev/digirig-hid:/dev/digirig-hid
    ports:
      - "8080:8080/tcp"
    volumes:
      - graywolf-data:/data
    command: ["-config", "/data/graywolf.db", "-http", "0.0.0.0:8080"]

volumes:
  graywolf-data:

Save and exit: Press Ctrl + O, Enter, then Ctrl + X.

Phase 3: Start Graywolf

In your terminal, run this single command to start the container:

Bash

docker compose up -d

Docker will download Graywolf and start it up in the background!

Phase 4: Configure Graywolf in your web browser

  1. Open a browser on your phone, PC, or Pi and go to: http://:8080
  2. Head into Graywolf’s Settings / Configuration

That’s it! Your audio and PTT will stay connected even if you restart your Pi or unplug the Digirig.

2 Likes