I built a Linux tool to force my Samsung Phone with dead buttons into Download Mode
Description and use
A Linux CLI tool detects Samsung phones, sends the appropriate AT commands, and confirms entry into Download Mode, overcoming broken buttons.
Problem
Samsung phones expose a diagnostic serial interface over USB; entering Download Mode requires pressing Volume Down + Home + Power, which is impossible with broken buttons. The existing Windows tool is inconvenient for a Linux user.
Outcome
The tool successfully forces Samsung phones with broken buttons into Download Mode from a Linux environment, avoiding the need for a Windows PC.
Workflow
- Detect the device by reading the USB vendor ID from /sys to ensure it is a Samsung device.
- Open the serial port /dev/ttyACM* and send the model‑specific AT command to reboot into Download Mode (e.g., AT+FUS? for Galaxy Core LTE, AT+REBOOT=4 for Galaxy S8).
- Poll sysfs for known Samsung PIDs (685d, 685e, 6860) to confirm the device is in Download Mode.
- Handle port disappearance mid‑sequence by treating EIO as a success signal and continuing polling.
Evidence
Samsung phones expose a diagnostic serial interface over USB (/dev/ttyACM*). You can send AT commands to force the device into Download Mode (Odin).
The tool does three things: Detects the device by reading the USB vendor ID from /sys. Samsung VID is 04e8.
Sends a sequence of AT commands over the serial port. The exact command that triggers the reboot varies by model. On my Galaxy Core LTE the reboot command is AT+FUS?. On a Galaxy S8 I tested, the reboot command is AT+REBOOT=4.
Confirms Download Mode by polling sysfs for known Samsung PIDs: 685d, 685e, 6860.
Port names are useless for identification. /dev/ttyACM0 vs /dev/ttyACM1 depends on kernel enumeration order. I added serial identification so that you can tell the devices apart.
The port can disappear mid-sequence. On the Core LTE, the phone reboots after ATE0. The next command fails with EIO. Initially I treated this as an error. Now I treat it as a success signal and poll for the Download Mode PID.
git clone https://github.com/alexjune1206-maker/samsung-300k-tool-4-linux.git cd samsung-300k-tool-4-linux mkdir build && cd build cmake .. cmake --build . sudo ./samsung-300k-tool --help
- Record date: 2026-10-26T11:11:24.175Z