Skip to content

deadboy18/iRemote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iRemote

iRemote

Universal USB IR Blaster — Web Interface
Control any TV, AC, fan, or IR device from your browser.

FeaturesDevicesQuick StartScreenshotsHow It WorksCredits

Python Flask Browser License


What is this?

iRemote is a web-based universal IR blaster interface powered by a Python backend. Plug in a USB IR blaster, run the server, and control any infrared device from any browser — no WebUSB or special browser extensions required.

Works with cheap USB IR blasters you can find on AliExpress for $3–8:

  • Tiqiaa (uses the ZaZa Remote app on mobile)
  • Ocrustar / ElkSmart (uses the Smart IR Blaster app on mobile)

Features

Feature Description
🎮 Universal Remote TV remote with multi-blast (Samsung + LG + Sony + Philips simultaneously)
🏨 Hotel TV Toolkit Pre-built macros for hotel/hospitality TV menus — Samsung, LG, Sony, Philips
📚 IR Database Browser Browse 300,000+ IR codes from Flipper-IRDB and irdb
📂 File Import Flipper Zero .ir, IRDB .csv, Pronto hex, raw pulse data, iRemote Android .json
🔴 IR Learning Capture signals from physical remotes (point and press)
Batch Learn Pre-define button names, learn them one-by-one — fast full remote capture
❄️ AC / Fan Remotes Temperature control, mode switching, fan speed
📡 Protocol Sender Manual NEC / Samsung32 / RC5 / Sony SIRC with hex address + command
💾 Saved Remotes Persist custom remotes, export/import as JSON
🔧 Custom Macros Build your own IR button sequences with delays
📋 Full Logging See every USB frame, protocol encode, and device response

Supported Devices

Device VID:PID Interface Buy
Tiqiaa 10C4:8468 pyusb (bulk transfers) AliExpress ~$5
Ocrustar / ElkSmart 045C:02AA + 10 others pyusb (libusb) AliExpress ~$3

Both devices support transmit and receive (learn mode).

Quick Start

# 1. Clone
git clone https://github.com/deadboy18/iRemote.git
cd iRemote

# 2. Install dependencies
pip install -r requirements.txt

# 3. Run
python server.py

# 4. Open any browser
#    http://localhost:7890

Windows Extra Step

For Ocrustar: install Zadig, select your device (SMART), and replace the driver with WinUSB.

For Tiqiaa: also needs WinUSB via Zadig (despite being HID — it uses bulk transfers internally).

Linux

# Allow non-root USB access
sudo cp 99-irblaster.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
Example udev rules (99-irblaster.rules)
# Tiqiaa
SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="8468", MODE="0666"
# Ocrustar
SUBSYSTEM=="usb", ATTR{idVendor}=="045c", MODE="0666"

Screenshots

Remote Hotel TV IR Database
Remote Hotel TV IR Database
File Import Learn Mode Log
File Import Learn Mode Log

How It Works

┌──────────────────┐     WebSocket/Socket.IO     ┌──────────────────┐     USB      ┌──────────┐
│   Browser (any)  │ ◄──────────────────────────► │  Python Server   │ ◄──────────► │ IR Blaster│
│                  │                              │  server.py       │              │          │
│  • UI / Remote   │                              │  • pyusb         │              │  Tiqiaa  │
│  • IR encoders   │                              │  • Pulse compress │              │    or    │
│  • IRDB browser  │                              │  • Huffman encode │              │ Ocrustar │
│  • File import   │                              │  • Learn mode    │              │          │
└──────────────────┘                              └──────────────────┘              └──────────┘

Frontend (index.html): All UI, IR protocol encoders (NEC, Samsung32, Sony SIRC, RC5), file parsers, IRDB GitHub API integration, hotel macros, saved remotes.

Backend (server.py): USB device management via pyusb, Ocrustar protocol engine (pulse compression, Huffman coding, LEB128 with ÷16 prescaling, byte mangling, FC/FA handshake), Tiqiaa HID-over-bulk protocol, learn/capture mode.

Why a Python backend?

WebUSB and WebHID are Chrome-only and have significant limitations with these devices. The Python backend works with any browser (Firefox, Safari, mobile browsers) and gives full control over USB communication, including the complex Ocrustar encoding pipeline.

GitHub Pages + Local Server

The UI is hosted on GitHub Pages so you can use it without downloading anything — just run python server.py locally and the hosted page connects to localhost:7890. You can also download index.html and open it directly as a file.

Hotel TV Macros

Built-in sequences for accessing hospitality TV service menus:

Brand Macros
Samsung Hotel Menu, Hotel Menu (Alt), Smart Remote Unlock, Service Menu, Factory Service, PIN Reset
LG Installer Menu (9876), Installer Menu (1105), Service Menu
Philips Hotel Mode (BDS), Service Menu (SAM)
Sony Service Menu
Universal Power Off All (6 brands at once)

You can also build and save custom macros with the macro builder.

File Format Support

Format Source Extension
Flipper Zero IR Flipper-IRDB .ir
IRDB CSV probonopd/irdb .csv
iRemote Android JSON iRemote Android app .json
Pronto Hex Various .txt
Raw Pulse Data Any .txt

Dependencies

flask>=3.0
flask-socketio>=5.3
pyusb>=1.2.1
libusb-package>=1.0.26

Project Structure

iRemote/
├── index.html          # Frontend — full UI (single file, no build step)
├── server.py           # Python backend — USB communication
├── requirements.txt    # Python dependencies
├── screenshots/        # App screenshots
└── README.md

Related Projects

License

MIT


Made by deadboy18
Protocol reverse engineering, USB drivers, and web interface

About

Universal USB IR blaster web interface — control any TV, AC, or device via Tiqiaa & Ocrustar/ElkSmart blasters. Python backend, works in any browser.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors