_                    __
           | |                  / _|
   ___ __ _| |_ _ __ ___   ___ | |_
  / __/ _` | __| '__/ _ \ / _ \|  _|
 | (_| (_| | |_| | | (_) | (_) | |
  \___\__,_|\__|_|  \___/ \___/|_|
Note
WORK IN PROGRESS
This is Work In Progress. Currently only lscatroof tool is usable.

catroof is device manager software for operating systems running Linux kernel with ALSA (PCM and RAWMIDI) enabled.

For those familiar with ratbagd, it is a similar device manager software. Instead of limiting the scope of devices to input devices, catroof aims at configuring settings of audio, midi and surface control devices, a task that includes managing some linux input devices. catroofd is designed to be run on user session bus, and not as root. Instead, standard UNIX permission mechanisms ensure that processes running as non-priviledged user have access to the device objects (via standard udev hooks that adjust group membership, or ACL, for the appearing device nodes).

Project goals:

  • device manager D-Bus service (catroofd) that implements device enumeration, configuration and profile (UCM2 and more) management.

  • User interface frontends, including but not limited to:

    • GTK3 frotnend via GNOME introspection (gcatroof) See piper for the libratbag equivalent.

    • ncurses frontend (ncatroof)

    • commandline control via catroof_control

    • QT (KDE) frontend

    • WebUI frontend via D-Bus to HTTP

Example output of lscatroof that shows various sysfs devices and their mapping to ALSA
            _                    __
           | |                  / _|
   ___ __ _| |_ _ __ ___   ___ | |_
  / __/ _` | __| '__/ _ \ / _ \|  _|
 | (_| (_| | |_| | | (_) | (_) | |
  \___\__,_|\__|_|  \___/ \___/|_|


Version 0-dev e1af2062ad54f05ae2225dd7d48f2d5332afba74
Built Thu Jul 20 18:49:24 2023

card#0
  id: "hw:tegrahda"
  description: "tegrahda"
  Devices:
    Audio device#3
      id: "hw:tegrahda,3"
        1 playback subdevice(s)
card#1
  id: "hw:tegrasndt210ref"
  description: "tegrasndt210ref"
  Devices:
    Audio device#0
      id: "hw:tegrasndt210ref,0"
        1 duplex subdevice(s)
    Audio device#1
      id: "hw:tegrasndt210ref,1"
        1 duplex subdevice(s)
    Audio device#2
      id: "hw:tegrasndt210ref,2"
        1 duplex subdevice(s)
    Audio device#3
      id: "hw:tegrasndt210ref,3"
        1 duplex subdevice(s)
    Audio device#4
      id: "hw:tegrasndt210ref,4"
        1 duplex subdevice(s)
    Audio device#5
      id: "hw:tegrasndt210ref,5"
        1 duplex subdevice(s)
    Audio device#6
      id: "hw:tegrasndt210ref,6"
        1 duplex subdevice(s)
    Audio device#7
      id: "hw:tegrasndt210ref,7"
        1 duplex subdevice(s)
    Audio device#8
      id: "hw:tegrasndt210ref,8"
        1 duplex subdevice(s)
    Audio device#9
      id: "hw:tegrasndt210ref,9"
        1 duplex subdevice(s)
card#2
  id: "hw:U7"
  description: "U7"
  Devices:
    Audio device#0
      id: "hw:U7,0"
        1 duplex subdevice(s)
    Audio device#1
      id: "hw:U7,1"
        1 playback subdevice(s)
    Audio device#2
      id: "hw:U7,2"
        1 playback subdevice(s)
card#3
  id: "hw:U192k"
  description: "U192k"
  Devices:
    Audio device#0
      id: "hw:U192k,0"
        1 duplex subdevice(s)
    MIDI device#0
      id: "hw:U192k,0"
        1 duplex subdevice(s)
=========================================================================
 N  SUBSYSTEM DEVPATH
-------------------------------------------------------------------------
 1   platform /platform/serial8250
              [TTY] ttyS2
              [TTY] ttyS3
              [TTY] ttyS1
-------------------------------------------------------------------------
 2   platform /70006200.serial
              [TTY] ttyTHS2
-------------------------------------------------------------------------
 3   platform /70030000.hda
              [SOUND] card0
-------------------------------------------------------------------------
 4        mmc /sdhci-tegra.0/mmc_host/mmc0/mmc0:aaaa
              [BLOCK] mmcblk0
-------------------------------------------------------------------------
 5   platform /70006000.serial
              [TTY] ttyS0
-------------------------------------------------------------------------
 6 usb-serial /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.4/1-2.4.4.4:1.0/ttyUSB0
              [TTY] ttyUSB0
-------------------------------------------------------------------------
 7        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.4
              [MNFCTR] Prolific Technology Inc.
              [PRODCT] USB-Serial Controller
              [USB VID:PID] 067b:2303
              [SPEED] 12 (Mbit)
-------------------------------------------------------------------------
 8 usb-serial /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.2/1-2.4.4.2:1.0/ttyUSB1
              [TTY] ttyUSB1
-------------------------------------------------------------------------
 9        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.2
              [MNFCTR] LADIHW
              [PRODCT] Izdelie 1 (USB UART)
              [SERIAL] 5308090AL029JTA
              [USB VID:PID] 0403:6001
              [SPEED] 12 (Mbit)
-------------------------------------------------------------------------
10        hid /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.4/1-2.4.4.3.4:1.0/0003:046D:C222.0005
              [INPUT] input5
              [EVENT] event5
-------------------------------------------------------------------------
11        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.4
              [MNFCTR] G15 Keyboard
              [PRODCT] G15 Keyboard
              [USB VID:PID] 046d:c222
              [SPEED] 12 (Mbit)
-------------------------------------------------------------------------
12        hid /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.2/1-2.4.4.3.2:1.0/0003:045E:001E.0004
              [INPUT] input4
              [EVENT] event4
-------------------------------------------------------------------------
13        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.2
              [MNFCTR] Microsoft
              [PRODCT] Microsoft IntelliMouse® Explorer
              [USB VID:PID] 045e:001e
              [SPEED] 1.5 (Mbit)
-------------------------------------------------------------------------
14        hid /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.1/1-2.4.4.3.1:1.0/0003:046D:C221.0002
              [INPUT] input2
              [EVENT] event2
-------------------------------------------------------------------------
15        hid /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.1/1-2.4.4.3.1:1.1/0003:046D:C221.0003
              [INPUT] input3
              [EVENT] event3
-------------------------------------------------------------------------
16        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3/1-2.4.4.3.1
              [MNFCTR] Logitech
              [PRODCT] Logitech Gaming Keyboard
              [USB VID:PID] 046d:c221
              [SPEED] 1.5 (Mbit)
-------------------------------------------------------------------------
17        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.3
              [MNFCTR] Logitech
              [PRODCT] Logitech G15 Keyboard
              [USB VID:PID] 046d:c223
              [SPEED] 12 (Mbit)
-------------------------------------------------------------------------
18 usb-serial /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.1/1-2.4.4.1:1.0/ttyUSB2
              [TTY] ttyUSB2
-------------------------------------------------------------------------
19        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4.1
              [MNFCTR] LADIHW
              [PRODCT] Izdelie 1 (USB UART)
              [SERIAL] 5308090AL029JTB
              [USB VID:PID] 0403:6001
              [SPEED] 12 (Mbit)
-------------------------------------------------------------------------
20        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.4
              [MNFCTR] GenesysLogic
              [PRODCT] USB2.0 Hub
              [USB VID:PID] 05e3:0610
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
21        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.2/1-2.4.2:1.0
              [SOUND] card2
-------------------------------------------------------------------------
22        hid /70090000.xusb/usb1/1-2/1-2.4/1-2.4.2/1-2.4.2:1.4/0003:1043:857C.0006
              [INPUT] input6
              [EVENT] event1
-------------------------------------------------------------------------
23        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.2
              [MNFCTR] ASUS
              [PRODCT] Xonar U7
              [USB VID:PID] 1043:857c
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
24        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.3/1-2.4.3:1.0
              [SOUND] card3
-------------------------------------------------------------------------
25        usb /70090000.xusb/usb1/1-2/1-2.4/1-2.4.3
              [MNFCTR] BEHRINGER
              [PRODCT] UMC404HD 192k
              [USB VID:PID] 1397:0509
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
26        usb /70090000.xusb/usb1/1-2/1-2.4
              [MNFCTR] GenesysLogic
              [PRODCT] USB2.0 Hub
              [USB VID:PID] 05e3:0610
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
27        usb /70090000.xusb/usb1/1-2
              [MNFCTR] Generic
              [PRODCT] 4-Port USB 2.1 Hub
              [USB VID:PID] 0bda:5411
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
28        usb /70090000.xusb/usb1
              [MNFCTR] Linux 4.9.299-5305-27261-geebda4d2b455 xhci-hcd
              [PRODCT] xHCI Host Controller
              [SERIAL] 70090000.xusb
              [USB VID:PID] 1d6b:0002
              [SPEED] 480 (Mbit)
-------------------------------------------------------------------------
29       scsi /70090000.xusb/usb2/2-1/2-1.3/2-1.3:1.0/host1/target1:0:0/1:0:0:0
              [VENDOR] TO Exter
              [MODEL] nal USB 3.0
              [WWID] naa.3020150331000760
              [BLOCK] sdb
-------------------------------------------------------------------------
30        usb /70090000.xusb/usb2/2-1/2-1.3
              [MNFCTR] TOSHIBA
              [PRODCT] External USB 3.0
              [SERIAL] 201503310007F
              [USB VID:PID] 0080:a001
              [SPEED] 5000 (Mbit)
-------------------------------------------------------------------------
31       scsi /70090000.xusb/usb2/2-1/2-1.1/2-1.1:1.0/host0/target0:0:0/0:0:0:0
              [VENDOR] TO Exter
              [MODEL] nal USB 3.0
              [WWID] naa.3020150331000760
              [BLOCK] sda
-------------------------------------------------------------------------
32        usb /70090000.xusb/usb2/2-1/2-1.1
              [MNFCTR] TOSHIBA
              [PRODCT] External USB 3.0
              [SERIAL] 201503310007F
              [USB VID:PID] 0080:a001
              [SPEED] 5000 (Mbit)
-------------------------------------------------------------------------
33        usb /70090000.xusb/usb2/2-1/2-1.4
              [MNFCTR] GenesysLogic
              [PRODCT] USB3.0 Hub
              [USB VID:PID] 05e3:0612
              [SPEED] 5000 (Mbit)
-------------------------------------------------------------------------
34        usb /70090000.xusb/usb2/2-1
              [MNFCTR] Generic
              [PRODCT] 4-Port USB 3.1 Hub
              [USB VID:PID] 0bda:0411
              [SPEED] 5000 (Mbit)
-------------------------------------------------------------------------
35        usb /70090000.xusb/usb2
              [MNFCTR] Linux 4.9.299-5305-27261-geebda4d2b455 xhci-hcd
              [PRODCT] xHCI Host Controller
              [SERIAL] 70090000.xusb
              [USB VID:PID] 1d6b:0003
              [SPEED] 5000 (Mbit)
-------------------------------------------------------------------------
36   platform /70006040.serial
              [TTY] ttyTHS1
-------------------------------------------------------------------------
37   platform /sound
              [SOUND] card1

Development happens in GIT:

For instructions on building, installation and packaging catroof, see the doc/INSTALL.adoc file.

See also:

For related discussions, you are invited to join Libera.Chat channel #ladi