FLIR Scout custom/different palettes - Page 1
Forum section: electronics / general

author: tmbinc
author_rank: Frequent Contributor
timestamp: May 21, 2025, 08:11:04 pm
content: Recently obtained a cheap-ish Flir LS-XR with an accidentally killed feedback resistor on the 12V boost regulator which killed all downstream regulators on the Tau 2 core. A friend (thanks!) fixed the regulators so it's working again, only to get me disappointed with the device due to limited support of palettes in combination with the really poor display.I reversed the small microcontroller firmware that runs the show, and figured out you can enable more palettes (as supported by the Tau 2 core) by just re-writing the config.BE CAREFUL; the whole thing is horribly fragile. I never bricked my unit but the firmware has absolutely no protections whatsoever of invalid stuff. It's literally a bare BULK command to rewrite the configuration.By default, only these weird InstAlert/IsoTherm modes are supported. By changing config byte 5 to remove 0x40, you can enable regular mode where it cycles through the palettes. Black-Hot and White-Hot are always enabled but the others you can chose in byte 6..10 (after enabling them in byte 5).The palettes are internally activated by sending tau command 0x10. I couldn't find the enumeration in the Tau 2 IDD (I'm sure it must be somewhere...) but it seems to match the order of which they are described in the Tau 2 GUI documentation...Code:import usb1, structcontext = usb1.USBContext()handle = context.openByVendorIDAndProductID(0x1cbe, 0x0003)def cmd(handle, cmd, payload = b"", exp_ret = None):w = struct.pack("<HBBBI53sH", 0x5aa5, cmd, 3, 1, 0xffffffff, payload, 0x5aa5)print(">", w.hex())handle.bulkWrite(1, w)resp = handle.bulkRead(1, 64)print("<", resp.hex())exp_ret = exp_ret or cmdassert resp[:3] == bytes([0xa5, 0x5a, exp_ret])assert resp ^ resp == 0xffreturn resp[9:]with handle.claimInterface(0):print("SW version", cmd(handle, 0x13).split(b"\0"))config = cmd(handle, 8)print("CONFIG:", config.hex())for i in range(11):print("CFG%02d: %02x" % (i, config))# offset 5: bit 2, 3, 4, 5: flags with pal-enable# offset 6,7,8,9,10: palettes 1,2,3,4,5config = (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5)# 0x00: plain palettes# 0x40: IsoTherm / InstAlert modeconfig &= ~0x40# Always present: black, white hot# 0 - White Hot# 1 - Black Hot# 2 - Fusion# 3 - Rainbow# 4 - Glowbow# 5 - Ironbow1# 6 - Ironbow2# 7 - Sepia# 8 - Color 1# 9 - Color 2# 10 - Ice Fire# 11 - Rain (High Sensitivity Rainbow)# 12 - Isothermconfig = 7config = 8config = 9config = 10config = 11# write new configcmd(handle, 9, config, exp_ret = 8)# restarttry:cmd(handle, 0x2d, b"", exp_ret = 8)except usb1.USBErrorPipe:print("successfully rebooted")

author: tmbinc
author_rank: Frequent Contributor
timestamp: May 22, 2025, 07:36:54 am
content: Now I feel quite stupid because in the "FLIR Scout II, LS-X, LS-XR, Ocean Scout EU Tool", I found CaymanEOLTool.exe, which is the official UI for changing these settings I guess.. It also clarifies that there are factory and user settings (cmd 6/7 vs. 8/9).But maybe my findings are still useful for non-Windows people.

author: tmbinc
author_rank: Frequent Contributor
timestamp: May 23, 2025, 10:23:38 am
content: Maybe useful feature:cmd(handle, 0x29)sets USB-passthrough mode to the Tau2 core (USB bulk interface re-enumerates as CDC-ACM), so you can then use regular Tau configuration tools (like Camera Controller GUI) to configure the core directly, or do and download snapshots (super slow of course).

author: superdef
author_rank: Newbie
timestamp: July 29, 2025, 10:14:19 am
content: 正在研究TAU2的说明文档，发现TAU2 核心好像能通过通电加载某个配置文件而直接用50针的某些脚直接控制。