{"id":44139275,"url":"https://github.com/andycappdev/tuxbox","last_synced_at":"2026-05-18T10:06:40.129Z","repository":{"id":322294677,"uuid":"1088917328","full_name":"AndyCappDev/tuxbox","owner":"AndyCappDev","description":"Linux driver for all TourBox models - Native feel with USB, Bluetooth, haptics and graphical configuration GUI.","archived":false,"fork":false,"pushed_at":"2026-02-24T12:15:52.000Z","size":2488,"stargazers_count":40,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-24T17:25:34.151Z","etag":null,"topics":["linux","tourbox","tourbox-elite","tourbox-lite","tourbox-neo"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndyCappDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-03T16:26:14.000Z","updated_at":"2026-02-24T12:15:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AndyCappDev/tuxbox","commit_stats":null,"previous_names":["andycappdev/tourboxelite","andycappdev/tourbox-linux","andycappdev/tuxbox"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/AndyCappDev/tuxbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndyCappDev%2Ftuxbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndyCappDev%2Ftuxbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndyCappDev%2Ftuxbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndyCappDev%2Ftuxbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndyCappDev","download_url":"https://codeload.github.com/AndyCappDev/tuxbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndyCappDev%2Ftuxbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31542384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","tourbox","tourbox-elite","tourbox-lite","tourbox-neo"],"created_at":"2026-02-09T00:19:27.041Z","updated_at":"2026-05-18T10:06:40.122Z","avatar_url":"https://github.com/AndyCappDev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TuxBox — Linux Driver for TourBox Controllers\n\n[![Version](https://img.shields.io/badge/version-3.1.4-green.svg)](https://github.com/AndyCappDev/tuxbox/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Platform: Linux](https://img.shields.io/badge/platform-linux-lightgrey.svg)](https://www.linux.org/)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n\n**Author:** Scott Bowman ([AndyCappDev](https://github.com/AndyCappDev))\n**Repository:** [github.com/AndyCappDev/tuxbox](https://github.com/AndyCappDev/tuxbox)\n\nLinux driver for the TourBox Lite, Neo, Elite and Elite Plus by TourBox Tech Inc. Connects via **USB** or **Bluetooth LE** with button response so seamless, you'll forget it's not the official driver.\n\n## Device Compatibility\n\n| Device | Connection | Haptics | Notes |\n|--------|------------|---------|-------|\n| TourBox Elite | USB, Bluetooth | ✅ | Full support |\n| TourBox Elite Plus | USB, Bluetooth | ✅ | Full support |\n| TourBox Neo | USB only | ❌ | Full Support |\n| TourBox Lite (USB) | USB only | ❌ | Full support |\n| TourBox Lite (Bluetooth) | Bluetooth only | ❌ | Full Support |\n\n## Features\n\n- ✅ **Graphical Configuration** - Full-featured GUI for visual configuration with live preview\n- ✅ **USB and Bluetooth LE** - Connect via USB cable or wirelessly via Bluetooth\n- ✅ **Haptic Feedback** - Configurable vibration feedback for rotary controls (Elite series only)\n- ✅ **Application Profiles** - Different button mappings per application (Wayland and X11)\n- ✅ **Window Detection** - Automatic profile switching based on focused window\n- ✅ **Full Button Mapping** - All 20 controls configurable (buttons, knobs, scroll wheel, dial)\n- ✅ **Modifier Keys** - Create over 250 unique key combinations per profile using physical buttons as modifiers\n- ✅ **Import/Export Profiles** - Import and Export profiles to share with the community\n- ✅ **Systemd Integration** - Runs as a user service, starts on login\n- ✅ **Non-Systemd Support** - Works with OpenRC, runit, s6, and other init systems\n\n![TuxBox Configuration GUI](docs/images/gui-screenshot.png?v=3.1.0)\n\n## Requirements\n\n### System Requirements\n\n- Linux (Debian, Ubuntu, Linux Mint, Fedora, Arch tested)\n- Python 3.9+\n- Bluetooth support (bluez) - for Bluetooth LE connection\n- User must be in `dialout` group - for USB connection\n- Build tools for compiling Python packages:\n  - **Debian/Ubuntu:** `gcc python3-dev linux-headers-generic libxcb-cursor0`\n  - **Fedora/RHEL:** `gcc python3-devel kernel-headers`\n  - **Arch:** `gcc python linux-headers`\n- Running on Wayland or X11 (for app-specific profiles, X11 requires `xdotool`)\n\n\u003e **Note:** The `install.sh` script will check for these dependencies and tell you what to install if anything is missing.\n\n### Python Dependencies\n\n- **For GUI configuration tool:**\n  - PySide6 \u003e= 6.5.0 (Qt6 for Python)\n  - qasync \u003e= 0.24.0 (async Qt support)\n  - Automatically installed by `install.sh`\n\n### Additional Requirements for Profile Mode\n\n- **For profile mode (app-specific mappings):**\n  - **KDE Plasma (Wayland):** `kdotool` required (see installation instructions below)\n  - **GNOME (Wayland):** [Focused Window D-Bus extension](https://extensions.gnome.org/extension/5592/focused-window-d-bus/) required (see installation instructions below)\n  - **Sway/Hyprland/Niri:** No additional requirements\n  - **X11 (all desktops):** `xdotool` required (see installation instructions below)\n\n## Quick Install\n\n### Connection Options\n\nThe driver supports two connection methods:\n\n| Method | How to Use | Requirements |\n|--------|------------|--------------|\n| **USB** | Just plug in the USB-C cable | User in `dialout` group |\n| **Bluetooth LE** | Just turn on the TourBox (don't connect USB) | Bluetooth enabled |\n\nThe driver **auto-detects** everything:\n- **USB:** Scans `/dev/ttyACM*` devices and probes each for a TourBox response\n- **Bluetooth:** Scans for any device named \"TourBox\" and connects automatically\n\n\u003e **Note:** Some Bluetooth equipped models do not require pairing depending on what firmware is installed on them. The driver finds your TourBox automatically by scanning for its name. If the driver doesn't find your TourBox, try putting it in pairing mode (hold the button above the power switch for 2-3 seconds until the LED flashes) and restart the driver with `File-\u003eRestart Driver` in the Configuration GUI. After the first successful connection, normal power cycles should reconnect automatically without needing pairing mode again.\n\n### Run the Installer\n\n```bash\ngit clone https://github.com/AndyCappDev/tuxbox.git\ncd tuxbox\n./install.sh\n```\n\nThe installer will:\n1. Create a Python virtual environment\n2. Install the driver and dependencies\n3. Install and enable the systemd service\n\nLog out and log back in or reboot to activate the driver.\n\n### Additional Step for KDE Plasma Users\n\nIf you're using KDE Plasma on Wayland and want profile mode (app-specific mappings), you need to install `kdotool`:\n\n```bash\n# 1. Install build dependencies\nsudo apt install build-essential pkg-config libdbus-1-dev libxcb1-dev\n\n# 2. Install Rust (if not already installed)\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n# Choose option 1 for standard installation when prompted\nsource $HOME/.cargo/env\n\n# 3. Install kdotool\ncargo install kdotool\n\n# 4. Verify installation\nkdotool --version\n```\n\n### Additional Step for GNOME Users\n\nIf you're using GNOME on Wayland and want profile mode (app-specific mappings), you need to install the \"Focused Window D-Bus\" extension:\n\n1. Visit [Focused Window D-Bus extension page](https://extensions.gnome.org/extension/5592/focused-window-d-bus/)\n2. Click the Install button\n3. Verify installation:\n   ```bash\n   gnome-extensions list | grep focused-window-dbus\n   # Should show: focused-window-dbus@flexagoon.com\n   ```\n\nWithout this extension, profile mode will not work on GNOME (the driver will use the default profile for all apps).\n\n### Additional Step for Sway/Hyprland Users\n\nNo additional software required - profile mode works out of the box using the compositor's built-in IPC.\n\n### Additional Step for X11 Users\n\nIf you're using X11 (Cinnamon, MATE, XFCE, i3, etc.) and want profile mode (app-specific mappings), you need to install `xdotool`:\n\n```bash\n# Debian/Ubuntu/Mint\nsudo apt install xdotool\n\n# Fedora/RHEL\nsudo dnf install xdotool\n\n# Arch\nsudo pacman -S xdotool\n```\n\nVerify installation:\n```bash\nxdotool --version\n```\n\n\u003e **Linux Mint users:** The version of `xdotool` in the Mint repositories may be too old (v3.20160805.1 doesn't support the commands this driver needs). If profile switching doesn't work, you may need to build xdotool from source:\n\u003e ```bash\n\u003e sudo apt install libxtst-dev libxinerama-dev libxkbcommon-x11-dev\n\u003e git clone https://github.com/jordansissel/xdotool.git\n\u003e cd xdotool\n\u003e make\n\u003e sudo make install\n\u003e ```\n\n## Updating\n\nTo update to the latest version:\n\n```bash\ncd /path/to/tuxbox\ngit pull\n./install.sh\n```\n\nThe installer will automatically:\n- Stop the running service if it's active\n- Update all files and dependencies\n- Preserve your existing configuration by default\n- Ask if you want to restart the service with the new version\n\n**Note:** It's safe to run the installer while the service is running - it will handle stopping and restarting automatically. Your configuration file and all profiles are preserved during updates.\n\n## Configuration GUI\n\nThe driver includes a **graphical configuration tool** that makes it easy to configure button mappings without editing config files manually.\n\n### Running the GUI\n\nAfter installation, simply run:\n\n```bash\ntuxbox-gui\n```\n\nYou can also run it from the Application Launcher or pin it to your Application Manager after you run it for the first time for easy access.\n\n### What You Can Do with the GUI\n\n- **Visual Configuration** - See a diagram of your TourBox with visual feedback while editing control mappings\n- **Profile Management** - Create, edit, and delete application-specific profiles\n- **Window Matching** - Use \"Capture Active Window\" to detect windows for application profile matching\n- **Testing** - Test your button mappings in your applications without having to quit the configuration GUI\n- **Easy Key Assignment** - Point-and-click interface for keyboard shortcuts and mouse wheel actions\n- **Check for Updates** - Easily check if a newer version is available (Help → Check for Updates)\n\n**See the [Complete GUI User Guide](docs/GUI_USER_GUIDE.md) for detailed instructions, tutorials, and troubleshooting.**\n\n## Manual Installation\n\nIf you prefer manual setup, first ensure you have the build dependencies installed:\n\n```bash\n# Debian/Ubuntu\nsudo apt install gcc python3-dev linux-headers-generic libxcb-cursor0 bluez python3-pip\n\n# Fedora/RHEL\nsudo dnf install gcc python3-devel kernel-headers bluez python3-pip\n\n# Arch\nsudo pacman -S gcc python linux-headers bluez python-pip\n```\n\nThen proceed with installation:\n\n```bash\n# 1. Create virtual environment\npython3 -m venv venv\n\n# 2. Install the driver and GUI dependencies\n./venv/bin/pip install -e .\n./venv/bin/pip install -r tuxbox/gui/requirements.txt\n\n# 3. Copy config (legacy format - GUI will migrate on first launch)\nmkdir -p ~/.config/tuxbox\ncp tuxbox/default_mappings.conf ~/.config/tuxbox/mappings.conf\n\n# 4. Set up udev rules for uinput access\necho 'KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\", OPTIONS+=\"static_node=uinput\"' | sudo tee /etc/udev/rules.d/99-uinput.rules\nsudo udevadm control --reload-rules\nsudo modprobe uinput\necho \"uinput\" | sudo tee /etc/modules-load.d/uinput.conf\n\n# 5. Add user to input group (required for device access)\nsudo usermod -a -G input $USER\n# You'll need to log out and back in for this to take effect\n\n# 6. Add user to dialout group (for USB access)\nsudo usermod -a -G dialout $USER\n\n# 7. Set up systemd service\nmkdir -p ~/.config/systemd/user\nnano ~/.config/systemd/user/tuxbox.service\n# Add the following content (replace /path/to/tuxbox with actual path):\n#\n# [Unit]\n# Description=TuxBox Driver\n# After=graphical-session.target\n# PartOf=graphical-session.target\n#\n# [Service]\n# Type=simple\n# ExecStart=/path/to/tuxbox/venv/bin/python -m tuxbox\n# Restart=on-failure\n# RestartSec=5\n#\n# [Install]\n# WantedBy=graphical-session.target\n\n# 8. Enable and start service\nsystemctl --user daemon-reload\nsystemctl --user enable tuxbox\nsystemctl --user start tuxbox\n```\n\n### Non-Systemd Systems (OpenRC, runit, etc.)\n\nThe driver works on systems without systemd. The installer will detect this and skip systemd service setup. You'll need to:\n\n1. **Create your own init script** for your init system (OpenRC, runit, s6, etc.)\n\n2. **Configure a restart command** for the GUI to use when restarting the driver. Add to `~/.config/tuxbox/config.conf`:\n\n```ini\n[service]\nrestart_command = rc-service tuxbox restart\n```\n\nExamples for different init systems:\n- **OpenRC:** `rc-service tuxbox restart`\n- **runit:** `sv restart tuxbox`\n- **s6:** `s6-svc -r /run/service/tuxbox`\n\n**Note:** Saving profiles in the GUI works without any configuration (it sends a reload signal directly to the driver process). Only the \"File → Restart Driver\" menu option requires the custom command.\n\nThe driver can also be run manually:\n```bash\n/path/to/tuxbox/venv/bin/python -m tuxbox\n```\n\n#### Example OpenRC Init Script (Gentoo)\n\nCreate `/etc/init.d/tuxbox`:\n\n```sh\n#!/sbin/openrc-run\n\nname=\"TuxBox Driver\"\ndescription=\"TuxBox - Linux driver for TourBox controllers\"\ncommand=\"/home/USER/tuxbox/venv/bin/python\"\ncommand_args=\"-m tuxbox\"\ncommand_background=true\ncommand_user=\"USER:USER\"\npidfile=\"/run/${RC_SVCNAME}.pid\"\n\ndepend() {\n    need localmount\n    after bootmisc\n}\n```\n\nReplace `USER` with your username (in three places) and update the path if needed. Then:\n\n```bash\nsudo chmod +x /etc/init.d/tuxbox\nsudo rc-update add tuxbox default\nsudo rc-service tuxbox start\n```\n\n## Configuration\n\nThe easiest way to configure button mappings is with the **graphical configuration tool** (see below). For manual editing, profiles are stored in `~/.config/tuxbox/profiles/` as individual `.profile` files.\n\n\u003e **Note:** Legacy configs at `~/.config/tourbox/mappings.conf` are automatically migrated when you first run the driver or GUI.\n\n### Legacy Format (Single File)\n\nIf editing manually before running the GUI, the config uses **profiles** - the `[profile:default]` section is required and contains your main button mappings:\n\n```ini\n[profile:default]\n# Button mappings\nside = KEY_LEFTMETA\ntop = KEY_LEFTSHIFT\ntall = KEY_LEFTALT\n# ... more buttons\n\n# Rotary controls\nscroll_up = REL_WHEEL:1\nscroll_down = REL_WHEEL:-1\nknob_cw = KEY_LEFTCTRL+KEY_EQUAL    # Zoom in\nknob_ccw = KEY_LEFTCTRL+KEY_MINUS   # Zoom out\n# ... more rotary controls\n```\n\n### App-Specific Profiles\n\nYou can add app-specific profiles that automatically switch when you focus different windows:\n\n```ini\n[profile:vscode]\nwindow_class = Code\nside = KEY_LEFTCTRL+KEY_SPACE          # Code completion\nknob_cw = KEY_LEFTCTRL+KEY_EQUAL       # Zoom in\ndpad_left = KEY_LEFTCTRL+KEY_PAGEUP    # Previous tab\ndpad_right = KEY_LEFTCTRL+KEY_PAGEDOWN # Next tab\n# ... all other buttons\n\n[profile:firefox]\nwindow_class = firefox-esr\nside = KEY_LEFTALT+KEY_LEFT     # Back\ntop = KEY_LEFTALT+KEY_RIGHT     # Forward\nknob_cw = KEY_LEFTCTRL+KEY_EQUAL    # Zoom in\n# ... all other buttons\n```\n\n**Note:** On X11, app-specific profiles require `xdotool`. On Wayland, see the compositor-specific requirements above.\n\n### Haptic Feedback\n\nThe TourBox Elite has built-in haptic motors that provide vibration feedback when rotating the knob, scroll wheel, or dial. You can configure haptic strength per profile:\n\n```ini\n[profile:default]\nhaptic = strong    # off, weak, or strong\n\n# Per-dial settings (optional, overrides global)\nhaptic.knob = weak\nhaptic.scroll = strong\nhaptic.dial = off\n```\n\nConfigure haptic settings via the GUI (Profile Settings dialog) or edit the config file directly. Haptic feedback is only available on TourBox Elite / Elite Plus - the Neo model does not have haptic motors.\n\nAfter editing, restart the service:\n```bash\nsystemctl --user restart tuxbox\n```\n\n## Usage\n\n### Service Management\n\n```bash\n# Start the driver\nsystemctl --user start tuxbox\n\n# Stop the driver\nsystemctl --user stop tuxbox\n\n# Check status\nsystemctl --user status tuxbox\n\n# View logs\njournalctl --user -u tuxbox -f\n\n# Restart after config changes\nsystemctl --user restart tuxbox\n```\n\n### Manual Testing\n\nBefore running the driver manually, you must stop the systemd service first:\n\n```bash\n# Stop the service\nsystemctl --user stop tuxbox\n\n# Navigate to the tuxbox directory\ncd /path/to/tuxbox\n\n# Run directly in terminal with verbose logging (auto-detects USB/BLE)\n./venv/bin/python -m tuxbox -v\n\n# Or force a specific connection mode:\n./venv/bin/python -m tuxbox --usb -v   # Force USB\n./venv/bin/python -m tuxbox --ble -v   # Force Bluetooth\n```\n\nPress `Ctrl+C` to stop.\n\nWhen you're done testing, restart the service:\n\n```bash\nsystemctl --user start tuxbox\n```\n\n## Uninstall\n\n```bash\n./uninstall.sh\n```\n\nOr manually:\n\n```bash\nsystemctl --user stop tuxbox\nsystemctl --user disable tuxbox\nrm ~/.config/systemd/user/tuxbox.service\nrm -rf ~/.config/tuxbox\nsystemctl --user daemon-reload\n```\n\n## Troubleshooting\n\n### Service won't start\n\nCheck logs:\n```bash\njournalctl --user -u tuxbox -n 50\n```\n\nCommon issues:\n- TourBox not powered on or out of range (for Bluetooth)\n- TourBox may need to be in pairing mode for initial Bluetooth discovery\n- USB cable not connected or power-only cable (for USB)\n- Missing Python dependencies\n- Device already connected to another system\n\n### USB not detected\n\nIf the driver doesn't detect your USB connection:\n\n```bash\n# Check if any ttyACM devices exist\nls -la /dev/ttyACM*\n\n# Check if you're in the dialout group\ngroups | grep dialout\n\n# If not in dialout group, add yourself:\nsudo usermod -a -G dialout $USER\n# Log out and back in for this to take effect\n```\n\nMake sure you're using a **data cable**, not a power-only charging cable. Try a different USB-C cable if the device doesn't appear.\n\n**If you have multiple USB serial devices** (Arduino, etc.), the TourBox might not be on `/dev/ttyACM0`. The driver automatically scans all `/dev/ttyACM*` devices, but you can also specify the port manually:\n\n```bash\n# Find which port the TourBox is on\nls -la /dev/ttyACM*\n\n# Run with a specific port\n./venv/bin/python -m tuxbox --usb --port /dev/ttyACM1\n\n# Or set it in your config file (~/.config/tuxbox/config.conf):\n# [device]\n# usb_port = /dev/ttyACM1\n```\n\n### \"/dev/uinput\" cannot be opened for writing\n\nIf you see this error in the logs, the uinput device permissions aren't set correctly. The install script should handle this automatically, but if needed, fix it manually:\n\n```bash\n# Create udev rule\necho 'KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\", OPTIONS+=\"static_node=uinput\"' | sudo tee /etc/udev/rules.d/99-uinput.rules\n\n# Reload udev and load module\nsudo udevadm control --reload-rules\nsudo modprobe uinput\n\n# Ensure module loads on boot\necho \"uinput\" | sudo tee /etc/modules-load.d/uinput.conf\n\n# Verify permissions\nls -l /dev/uinput\n# Should show: crw-rw---- 1 root input\n```\n\n### Profile switching not working\n\nProfile mode requires Wayland or X11 with `xdotool`. Verify your session type:\n```bash\necho $XDG_SESSION_TYPE\n# Should output: wayland or x11\n```\n\nFor X11, ensure `xdotool` is installed:\n```bash\nxdotool --version\n```\n\nTest window detection:\n```bash\n./venv/bin/python -m tuxbox.window_monitor\n```\n\n### Buttons not responding\n\nMake sure you're a member of the `input` group:\n```bash\nsudo usermod -a -G input $USER\n# Log out and back in\n```\n\n## Documentation\n\n- **[GUI User Guide](docs/GUI_USER_GUIDE.md)** - Complete guide for the graphical configuration tool\n- [Configuration guide](docs/CONFIG_GUIDE.md) - Manual config file editing\n- [Example configurations](tuxbox/default_mappings.conf)\n- [Development guide](docs/DEVELOPMENT.md)\n- [Why no overlay features?](docs/WHY_NO_OVERLAYS.md) - TourMenu, HUD, and Linux desktop fragmentation\n- [Button timing trade-offs](docs/BUTTON_TIMING_TRADEOFFS.md) - Understanding delays with combos and double-press\n\n## License\n\nMIT License - See [LICENSE.txt](LICENSE.txt) file\n\n## Community Testers\n\nThanks to these users for testing and confirming device compatibility:\n\n- [@PunkunHm](https://github.com/PunkunHm) - TourBox Lite (USB)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandycappdev%2Ftuxbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandycappdev%2Ftuxbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandycappdev%2Ftuxbox/lists"}