-
Install Flatpak and Flatpak Builder (if not already installed):
sudo dnf install flatpak flatpak-builder
-
Build the Flatpak package:
flatpak-builder --user --install build-dir io.github.Mozinho85.DeckSend.json
-
Launch DeckSend from your application menu!
-
(Optional) Export a bundle for easy sharing:
flatpak build-bundle build-dir DeckSend.flatpak io.github.Mozinho85.DeckSend
You can then double-click
DeckSend.flatpakto install on any Flatpak-enabled system.
- Copy the project folder to your Steam Deck.
- In Desktop Mode, right-click
install_decksend.sh, go to Properties → Permissions, and check "Is executable". - Double-click
install_decksend.shto run the installer. - Follow the prompts. The app will build and install itself, and a launcher will appear in your app menu.
The installer will automatically use toolbox (if available), rpm-ostree, or dnf as needed.
If you prefer, you can still build and install manually using toolbox, rpm-ostree, or dnf as described earlier in this README.
Below is the main entry point for the sender app. It initializes input and Bluetooth, reads controller events, builds HID reports, and sends them over Bluetooth:
#include "input.h"
#include "bluetooth.h"
#include "hid.h"
#include <stdio.h>
int main() {
printf("Steam Deck Sender App Starting...\n");
if (init_input() != 0) {
fprintf(stderr, "Failed to initialize input\n");
return 1;
}
if (init_bluetooth() != 0) {
fprintf(stderr, "Failed to initialize Bluetooth\n");
return 1;
}
while (1) {
struct ControllerEvent event;
if (read_input_event(&event) == 0) {
unsigned char report[64];
build_hid_report(&event, report);
send_hid_report(report, sizeof(report));
}
}
cleanup_input();
cleanup_bluetooth();
return 0;
}This app lets you use your Steam Deck as a Steam Controller on a Linux PC (Fedora/Bazzite).
- Captures button and trackpad events
- Emulates Steam Controller over Bluetooth HID (work in progress)
- Sends controller input to paired PC for native Steam support
- Bazzite (Fedora) on Steam Deck
- Bluetooth enabled
- Dependencies:
- cmake
- gcc
- libevdev-devel
- bluez
- bluez-libs-devel
- Open a terminal in Desktop Mode.
- Run:
sudo rpm-ostree install git cmake gcc libevdev-devel bluez bluez-libs-devel
- Reboot your Steam Deck after installation.
- Create and enter a toolbox:
toolbox create toolbox enter
- Install dependencies inside the toolbox:
sudo dnf install -y git cmake gcc libevdev-devel bluez bluez-libs-devel
git clone https://github.com/Mozinho85/DeckSend.git
cd DeckSend/steamdeck_sender
mkdir build
cd build
cmake ..
makesudo ./steamdeck_sender- You may need to adjust input device paths in the code if you get errors about input devices.
Make sure Bluetooth is enabled:
sudo systemctl start bluetoothPair your Steam Deck with your PC using Bluetooth settings.
- For immutable systems, toolbox is recommended for development.
- If you encounter issues, ensure you are in Desktop Mode and have a working network connection.
- Make sure Bluetooth is enabled:
systemctl start bluetooth
- Pair the Steam Deck with your Fedora PC using Bluetooth settings.
- Bluetooth HID emulation is a work in progress. Steam Controller detection may require further protocol implementation.
- For advanced configuration, edit the source files as needed.
If you need help, open an issue or ask for guidance.