A desktop application to control iPixel Color LED matrix displays (like BGLight, B.K. Light LED Pixel Board) directly from your Windows PC via Bluetooth.
New users? Read INSTALL.md or START_HERE.txt for step-by-step instructions!
-
Install Python 3.8+ from python.org
β οΈ Check "Add Python to PATH" during installation!
-
Install dependencies:
python -m pip install -r requirements.txt
-
Launch the app:
python run.py
Or simply double-click
run.py
Note: Use run.py instead of run.bat - Python files aren't blocked by Windows Smart App Control!
API keys are stored in ipixel_secrets.json (gitignored). Add keys via the app UI (YouTube/Weather tabs) and they will be saved there.
- π Auto-scan for iPixel devices via Bluetooth
- π Send text with customizable text color, background color, and sprite fonts
- πΌοΈ Display images (PNG, JPG, GIF, BMP) with thumbnail previews
- π Clock mode with built-in styles, custom time formats, and countdown timers
- πΎ Preset system - Save and quickly execute your favorite configurations
- π‘ Brightness control (1-100%)
- β‘ Power control (ON/OFF)
- π¨ Color picker for text and background
- π₯οΈ Easy-to-use GUI built with Tkinter
Display live stock prices directly on your LED panel!
- No API key required - Uses free yfinance library
- Support for any stock ticker (AAPL, TSLA, BTC-USD, etc.)
- Auto-refresh with configurable intervals
- Smart price formatting (auto-adjusts decimals, uses K notation for large numbers)
- Auto-color based on price movement (green=up, red=down)
- Multiple display formats (with static cycling for some formats)
Show your YouTube channel subscribers with an optional inline logo.
- Works with channel IDs or @handles
- Auto-refresh capability
- Smart number formatting (1.2M, 450K, etc.)
- Format: Logo + Subscribers only
- Logo requirement: 14x16 PNG (auto-resized if needed)
- Requires: YouTube Data API v3 key (stored in
ipixel_secrets.json)
Show current weather conditions and temperature!
- Real-time weather data from OpenWeatherMap
- Support for any city worldwide
- Temperature in Celsius or Fahrenheit
- Display current temperature, condition, feels-like, humidity
- Auto-refresh with configurable intervals
- Multiple display formats:
- Temperature + Condition (e.g., "72Β°F Sunny")
- Temperature only
- City + Temperature
- Full info
- Requires: Free OpenWeatherMap API key (stored in
ipixel_secrets.json) - Quota: 1,000 calls/day, updates every 10 minutes (free tier)
Generate and display procedural pixel art animations!
- Conway's Game of Life: Classic cellular automaton with emergent patterns
- Adjustable initial density (10-50%)
- Watch patterns evolve in real-time
- Matrix Rain: Digital rain effect inspired by The Matrix
- Falling character trails with fade effect
- Fire Effect: Realistic fire simulation
- Heat propagation algorithm
- Red-orange-yellow gradient
- Starfield: Parallax scrolling stars
- 3 speed levels for depth perception
- Plasma: Colorful interference patterns
- Sine wave-based smooth animations
- Configurable FPS (1-30, recommended 10-20 for best results)
- Color schemes: White, Green, Blue, Red, Rainbow
- Duration control (set seconds or infinite loop)
- No API key required
- Windows 10/11 (with Bluetooth LE support)
- Python 3.8 or higher
- Bluetooth adapter (built-in or USB dongle)
- iPixel Color LED panel (BGLight, B.K. Light, etc.)
- Background color brightness: On some iPixel panels/firmware versions, the background color rendered by the built-in text command appears dim or near-black, even when set to bright colors (e.g., white). This is a device/firmware limitation, not a color picker bug in the app.
- Workaround: If you need a truly bright background, use a full-image preset (or a custom image) where the background is part of the image itself. The original vendor app may use different commands or firmware paths that arenβt exposed here.
-
Install Python (if not already installed):
- Download from python.org
- During installation, check "Add Python to PATH"
-
Download this application:
- Download all files to a folder (e.g.,
C:\iPixel)
- Download all files to a folder (e.g.,
-
Install dependencies:
cd C:\iPixel pip install -r requirements.txt
-
Run the application:
python ipixel_controller.py
To create a standalone .exe file that doesn't require Python:
-
Install PyInstaller:
pip install pyinstaller
-
Create the executable:
pyinstaller --onefile --windowed --name "iPixel Controller" ipixel_controller.py -
Find the executable in the
distfolder
- Turn on your iPixel LED panel
- Click "Scan" to search for nearby Bluetooth devices
- Select your device from the dropdown (usually named "LED_BLE_...")
- Click "Connect"
- Wait for "Connected" status (green)
- Go to the "Text" tab
- Enter your text in the text box
- Choose text color (default: white)
- Choose background color (default: black)
- Select a sprite font (optional)
- Click "Send Text"
Tips:
- Keep text short for better readability on small displays
- Smaller font sizes work better for longer text
- High contrast (white on black) is most readable
- Go to the "Image" tab
- Click "Load Image" and select an image file
- Preview appears in the window
- Click "Send Image"
Supported formats: PNG, JPG, JPEG, GIF, BMP
Tips:
- Images are automatically resized to fit your panel
- For best results, use images with your panel's exact resolution
- Common panel sizes: 64x64, 32x32, 96x16
- Go to the "Clock" tab
- Select a clock style (0-8)
- Click "Show Clock"
The clock will display the current time and update automatically.
- Go to the "π Stock" tab
- Enter a stock ticker symbol (e.g., AAPL, TSLA, GOOGL)
- Click "Fetch Stock Data"
- Choose your display format and colors
- Click "Send to Display"
- Enable auto-refresh to update prices automatically
Note: No API key required - uses yfinance library.
- Go to the "πΊ YouTube" tab
- Enter your YouTube API key (get one from Google Cloud Console)
- Enter a channel ID or @handle (e.g., @MrBeast)
- Click "Fetch Stats"
- Click "Send to Display"
Format: Logo + Subscribers only
- Go to the "π€οΈ Weather" tab
- Enter your OpenWeatherMap API key (get free key from openweathermap.org)
- Default assets live under
Gallery/and are referenced with relative paths. - Sprite fonts are managed in Settings β Sprite Fonts and stored in
ipixel_settings.json. - API keys are saved in
ipixel_secrets.json(gitignored).
See AGENTS.md for internal architecture and contributor notes. 3. Enter your city name 4. Select temperature unit (Β°C or Β°F) 5. Click "Fetch Weather" 6. Choose display format 7. Click "Send to Display"
Display formats:
- Temperature + Condition
- Temperature Only
- City + Temperature
- Full (all info)
- Go to the "π¨ Animations" tab
- Choose an animation type:
- Conway's Game of Life: Classic cellular automaton
- Matrix Rain: Digital rain effect
- Fire Effect: Realistic fire simulation
- Starfield: Moving stars
- Plasma: Colorful plasma effect
- Select color scheme and speed (FPS)
- Set duration (0 = infinite loop)
- Click "Start Animation"
Tips:
- Higher FPS = smoother but more CPU intensive
- Game of Life density affects initial pattern complexity
- Use rainbow color for psychedelic effects
Go to the "Settings" tab to:
- Adjust brightness: Drag the slider (1-100%) and click "Set Brightness"
- Power control: Turn the display ON or OFF
- Ensure your LED panel is powered on
- Check that Bluetooth is enabled on your PC
- Make sure the panel is not connected to another device
- Try moving the panel closer to your PC
- Restart both the panel and your PC
- Ensure no other app is connected to the panel (close the official iPixel app)
- On Windows, go to Settings β Bluetooth & devices β Remove the device, then scan again
- Try disabling and re-enabling Bluetooth
- Make sure your Bluetooth adapter supports Bluetooth LE (Low Energy)
- Check that you're connected (status shows "Connected" in green)
- Try reducing font size or text length
- Ensure image file is not corrupted
- Try power cycling the panel
- Ensure you've installed all dependencies:
pip install -r requirements.txt
- Close other Bluetooth applications
- Reduce image size before sending
- Move panel closer to PC for better signal
To use the YouTube Stats feature, you need a free YouTube Data API v3 key:
- Go to Google Cloud Console
- Create a new project (or select existing)
- Enable YouTube Data API v3:
- Go to "APIs & Services" β "Library"
- Search for "YouTube Data API v3"
- Click "Enable"
- Create credentials:
- Go to "APIs & Services" β "Credentials"
- Click "Create Credentials" β "API Key"
- Copy the generated key
- Paste the key in the app's YouTube tab and click "Save Key"
Note: Free tier includes 10,000 quota units/day (sufficient for personal use).
To use the Weather Display feature, you need a free OpenWeatherMap API key:
- Go to openweathermap.org
- Click "Sign Up" and create a free account
- Go to your account β "API keys"
- Copy the default API key (or create a new one)
- Paste the key in the app's Weather tab and click "Save Key"
Note: Free tier includes 1,000 API calls/day and updates every 10 minutes.
This application works with LED panels using the iPixel Color protocol via Bluetooth LE:
- BGLight LED Pixel Boards
- B.K. Light LED Pixel Board (from Action stores)
- Generic LED_BLE_* devices
- iPixel Color compatible displays
- Communication: Bluetooth Low Energy (BLE)
- Write UUID:
0000fa02-0000-1000-8000-00805f9b34fb - Notify UUID:
0000fa03-0000-1000-8000-00805f9b34fb - Library: Built on pypixelcolor
ipixel-controller/
βββ ipixel_controller.py # Main application
βββ requirements.txt # Python dependencies
βββ README.md # This file
pypixelcolor- Core library for iPixel protocolbleak- Bluetooth Low Energy librarypillow- Image processing
Feel free to submit issues or pull requests!
- Windows only (Linux/Mac support possible with modifications)
- Single device connection at a time
- Some advanced features from the official app may not be available
- Bluetooth range is limited (typically 10 meters)
- Built on pypixelcolor by lucagoc
- Based on reverse-engineered iPixel protocol
- Thanks to the Home Assistant ha-ipixel-color project for protocol documentation
This project is provided as-is for personal use. Not affiliated with iPixel or the original device manufacturers.
For issues or questions:
- Check the Troubleshooting section above
- Verify you're using the latest version
- Check the pypixelcolor documentation
- Open an issue on GitHub (if applicable)
Enjoy controlling your LED panel! π