Skip to content

Commit 9b130bc

Browse files
web-flowclaude
andcommitted
docs: add BOSGAME LED investigation and BD CellView analysis
- docs/hardware: Expanded BOSGAME Ecolite LED ring light investigation with deep reverse engineering of CYX_RGB_LED_Tool (IT5571 vs IT5570E differences, protocol documentation, register mapping) - docs/product: Add BD CellView AI opportunity analysis document examining competitive gap vs Cytek Amnis AI for flow cytometry - scripts/bosgame: Add LED control test script for IT5570E SuperIO Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b00c15f commit 9b130bc

3 files changed

Lines changed: 635 additions & 24 deletions

File tree

docs/hardware/bosgame-ecolite-led-investigation.md

Lines changed: 124 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -140,25 +140,95 @@ cat /sys/class/pwm/pwmchip0/npwm
140140

141141
**Result:** 1 PWM channel exists (for fan or backlight), not RGB LED.
142142

143-
### 9. CYX_RGB_LED_Tool Analysis
143+
### 9. CYX_RGB_LED_Tool Deep Reverse Engineering
144144

145-
Downloaded and reverse-engineered the CYX_RGB_LED_Tool used by similar mini PCs (AM08 Pro).
145+
Downloaded and extensively reverse-engineered the CYX_RGB_LED_Tool used by similar mini PCs (AM08 Pro).
146146

147-
**Key findings from disassembly:**
148-
- Uses `io.dll` (inpout32) for direct I/O port access
149-
- Functions: `Out32`, `Inp32`, `IsInpOutDriverOpen`
150-
- Reads ports 0x2000/0x2001 for chip detection, expects 0x55 and 0x70/0x71
151-
- Built for **IT5571** chip (different from IT5570E)
152-
- Uses ports 0xC400 or 0x400 for LED control
147+
**Key findings from radare2 disassembly:**
148+
149+
#### LED Mode Values Discovered
150+
| Mode | Value | Icon Name | Effect |
151+
|------|-------|-----------|--------|
152+
| On/Static | 1 | 01_On | Solid LED |
153+
| Auto/Rainbow | 2 | 06_Auto | Rainbow breathing (BOSGAME default!) |
154+
| Breath | 3 | 03_Breath | Single color breathing |
155+
| ColorLoop | 4 | 04_ColorLoop | Color cycling |
156+
157+
**Note:** Icon name 05_RainBow actually uses mode value 2 (same as Auto). There is no mode 5.
158+
159+
#### LED Write Protocol (fcn.0040a360)
160+
The CYX tool writes to LED using this sequence:
161+
```
162+
Port = 0xC400 or 0x0400
163+
1. Write 0x2E to port, Write 0x11 to port+1 (select reg 0x11)
164+
2. Write 0x2F to port, Write high_byte to port+1 (color high byte)
165+
3. Write 0x2E to port, Write 0x10 to port+1 (select reg 0x10)
166+
4. Write 0x2F to port, Write low_byte to port+1 (color low byte)
167+
5. Write 0x2E to port, Write 0x12 to port+1 (select reg 0x12)
168+
6. Write 0x2F to port, Write mode to port+1 (mode value)
169+
```
170+
171+
#### Key Code Locations
172+
- Mode 2 (Rainbow) set at: 0x004093db (`mov eax, 2`)
173+
- Mode 3 (Breath) set at: 0x00409025 (`mov eax, 3`)
174+
- Mode 4 (ColorLoop) set at: 0x004091fb (`mov eax, 4`)
175+
- Mode 1 (Static) set at: 0x00408e09 (direct write to [esi+0x1918])
176+
- LED write function: 0x0040a360
177+
- Port initialization: 0x0040a325 (`mov dword [esi], 0xc400`)
153178

154179
**Testing on BOSGAME:**
155180
```bash
156-
# Read detection ports
157-
python3 -c "import os; fd=os.open('/dev/port',os.O_RDONLY); os.lseek(fd,0x2000,0); print(hex(os.read(fd,1)[0]))"
158-
# Result: 0xff (not responding)
181+
# Port 0x0400 responds (but is iTCO_wdt - watchdog timer)
182+
# Port 0xC400 returns 0xFF (not mapped)
183+
# SuperIO 0x4E responds with chip ID 0x5570 (IT5570E)
184+
```
185+
186+
**Result:** CYX tool is built for IT5571 using ports 0xC400/0x0400. BOSGAME IT5570E uses different registers.
187+
188+
### 10. SuperIO Register Writes (IT5570E)
189+
190+
Attempted to write to IT5570E SuperIO registers using the CYX protocol:
191+
192+
```bash
193+
# Enter SuperIO config mode
194+
write 0x87 to port 0x4E (twice)
195+
196+
# Write via 0x2E/0x2F protocol
197+
write 0x2E to 0x4E, write reg to 0x4F
198+
write 0x2F to 0x4E, write value to 0x4F
199+
```
200+
201+
**Tested writes:**
202+
- Reg 0x10 = 0x00 (color low) - Write accepted, no LED change
203+
- Reg 0x11 = 0x00 (color high) - Write accepted, no LED change
204+
- Reg 0x12 = 0x01 (mode static) - Write accepted, no LED change
205+
206+
**Result:** Registers accept writes but don't control LED.
207+
208+
### 11. LDN Base Port Scan
209+
210+
Found LDN 0x10 with base address 0x0912:
211+
```
212+
LDN 0x10: Base=0x0912, Active=0x01
213+
Reg 0x60/0x61 = 0x0912 (first base)
214+
Reg 0x62/0x63 = 0x0910 (second base)
215+
Reg 0xF1 = 0x49 ('I')
216+
Reg 0xF2 = 0x4A ('J')
159217
```
160218

161-
**Result:** CYX tool is incompatible - different chip, different protocol.
219+
**Port scan 0x0910-0x0921:** All return 0xFF (not responding)
220+
221+
### 12. EC RAM Write Attempts
222+
223+
Wrote to EC registers via `/sys/kernel/debug/ec/ec0/io`:
224+
225+
| Register | Before | After | LED Effect |
226+
|----------|--------|-------|------------|
227+
| 0x80 | 0x02 | 0x01 | None |
228+
| 0x80 | 0x01 | 0x00 | None |
229+
| 0xA0 | 0x03 | 0x00 | None |
230+
231+
**Result:** EC accepts writes but LED doesn't respond. LED likely controlled via extended EC RAM (0x100+) or internal firmware.
162232

163233
## EC Port Configuration
164234

@@ -175,18 +245,41 @@ The BOSGAME uses standard EC ports (0x62/0x66), not the extended ports the CYX t
175245

176246
1. **No Linux driver exists** for IT5570E LED control
177247
2. **No BOSGAME LED software** found online
178-
3. **EC registers 0x00-0xFF** don't control the LED
179-
4. **LED control is likely in:**
180-
- Extended EC RAM (0x100+ range, not easily accessible)
181-
- Separate microcontroller not exposed to OS
182-
- EC firmware handling animation internally
248+
3. **EC registers 0x00-0xFF** accept writes but don't control the LED
249+
4. **SuperIO registers 0x10-0x12** accept writes but don't control the LED
250+
5. **CYX_RGB_LED_Tool** is for IT5571, uses different ports (0xC400/0x0400)
251+
6. **LED control is likely in:**
252+
- Extended EC RAM (0x100+ range, not accessible via standard EC interface)
253+
- EC firmware handling animation internally with no OS interface
254+
- Possibly only controllable via BIOS settings
255+
256+
## What We Learned
257+
258+
### CYX Tool LED Protocol (for IT5571, NOT IT5570E)
259+
```
260+
Mode values: 1=static, 2=rainbow, 3=breath, 4=colorloop
261+
Ports: 0xC400 or 0x0400
262+
Protocol: 0x2E/0x2F indirect register access
263+
Registers: 0x10=color_low, 0x11=color_high, 0x12=mode
264+
```
265+
266+
### IT5570E vs IT5571
267+
- IT5570E chip ID: 0x5570 (confirmed via SuperIO 0x20/0x21)
268+
- IT5571 uses ports 0xC400/0x0400 for LED
269+
- IT5570E does NOT respond on these ports
270+
- Different register layout or protocol
183271

184272
## Recommendations
185273

186-
1. **Accept the rainbow** - it looks fine
187-
2. **Check BIOS** - some mini PCs have LED settings in UEFI
188-
3. **Email BOSGAME support** - ask for LED control software
189-
4. **Boot Windows once** - use PortMon/API Monitor to capture I/O if LED software exists
274+
1. **Check BIOS first** - Press DEL at boot to enter UEFI setup
275+
- Look in Advanced → Chipset or Peripherals for LED/RGB options
276+
- AMI Aptio BIOS may have hidden options (requires AMIBCP to unlock)
277+
2. **Email BOSGAME support** - support@bosgamepc.com
278+
- Ask if LED control software exists for Linux
279+
- Ask if BIOS has hidden LED settings
280+
3. **Check BOSGAME forum** - https://forum.bosgamepc.com/
281+
4. **Boot Windows once** - use PortMon/API Monitor to capture I/O if BOSGAME releases LED software
282+
5. **Accept the rainbow** - it looks fine, low power, no heat
190283

191284
## Files Downloaded
192285

@@ -199,17 +292,24 @@ The BOSGAME uses standard EC ports (0x62/0x66), not the extended ports the CYX t
199292

200293
**NEVER probe random I2C/EC registers without research** - can corrupt system state.
201294

295+
## Scripts Created
296+
297+
- `scripts/bosgame/led-control-test.py` - Python script for testing LED control (didn't work but useful for future attempts)
298+
202299
## References
203300

204301
- [OpenRGB](https://openrgb.org/) - Open source RGB control (doesn't support this hardware)
205-
- [CYX_RGB_LED_Tool](https://drive.google.com/file/d/1Mg25zCwqapHI7qoxw_7rVSQVWh1gpQl9/view) - For AM08 Pro, not BOSGAME
302+
- [CYX_RGB_LED_Tool](https://drive.google.com/file/d/1Mg25zCwqapHI7qoxw_7rVSQVWh1gpQl9/view) - For AM08 Pro IT5571, not BOSGAME IT5570E
206303
- [T9Plus LED Control](https://www2.rigacci.org/wiki/doku.php/doc/appunti/hardware/t9plus_mini_pc_rgb_led_control) - Python script for different hardware
207304
- [Mini PC Union Forum](https://minipcunion.com/) - Community for mini PC modding
305+
- [BOSGAME BIOS Download](https://www.bosgamepc.com/pages/bios-download-center) - Official BIOS files
306+
- [BOSGAME Support](https://www.bosgamepc.com/pages/support) - Driver downloads
307+
- [BOSGAME Forum](https://forum.bosgamepc.com/) - Official community forum
208308

209309
## Tags
210310

211-
bosgame, ecolite, dnb10m, led, rgb, ring-light, it5570e, ec, embedded-controller, reverse-engineering, failed
311+
bosgame, ecolite, dnb10m, led, rgb, ring-light, it5570e, it5571, ec, embedded-controller, reverse-engineering, superio, cyx, failed
212312

213-
## Incident Date
313+
## Investigation Date
214314

215315
2026-01-24

0 commit comments

Comments
 (0)