Skip to content

WIP: Support SQUiXL device by "Unexpected Maker"#85

Draft
jedie wants to merge 1 commit intoMicroPythonOS:mainfrom
jedie:SQUiXL
Draft

WIP: Support SQUiXL device by "Unexpected Maker"#85
jedie wants to merge 1 commit intoMicroPythonOS:mainfrom
jedie:SQUiXL

Conversation

@jedie
Copy link
Copy Markdown
Contributor

@jedie jedie commented Mar 21, 2026

Display doesn't work: Backlight will be enabled, but doesn't render anything.

Init looks like:

Starting main.py...
sys.version=3.4.0; LVGL (9.3.0) MicroPython (1.25.0) Binding compiled on 2026-03-21
sys.implementation=(name='micropython', version=(1, 25, 0, ''), _machine='Generic ESP32S3 module with Octal-SPIRAM with ESP32S3', _mpy=11014, _build='ESP32_GENERIC_S3-SPIRAM_OCT')
Free space on root filesystem:
total_space=12517376 / used_space=1712128 / free_space=10805248 bytes
RAM: 4650480 free, 1040 allocated, 4651520 total
Passing execution over to mpos.main
MicroPythonOS 0.9.0 running lib/mpos/main.py
unPhone ?
(emulated) lilygo_t_display_s3 ?
odroid_go ?
fri3d_2026 ?
SQUiXL ?
Detected squixl system, importing mpos.board.squixl
squixl.py initialization
squixl.py init i2c Bus with: scl=2, sda=1...
Scanning I2C bus for devices...
Found I2C device at address: 32 ($0X20)
Found I2C device at address: 54 ($0X36)
Found I2C device at address: 82 ($0X52)
Found I2C device at address: 90 ($0X5A)
Found I2C device at address: 93 ($0X5D)
Create instance of the LCA9555 IO Expander...
Writing to TCA9555: reg=0x6, value=0xffff
Resetting LCD...
Setting LCD backlight ON (BL_EN=0)
Screen soft power EN
5V presense sense IO
IO MUX - EN is Active LOW, so start it off
IO MUX - Set default to I2S - LOW is SD
Haptic EN
Setting LCD backlight OFF (BL_EN=0)
Setting LCD backlight ON (BL_EN=0)
squixl.py RGB parallel bus display initialization
squixl.py ST7701S() display initialization
_st7701s_init.py Send initialization commands to ST7701S...
Using custom set_params_func for initialization
set_params: cmd=0x11 no params
set_params: cmd=0xFF params: 77 01 00 00 10
set_params: cmd=0xC0 params: 3B 00
set_params: cmd=0xC1 params: 0D 02
set_params: cmd=0xC2 params: 21 08
set_params: cmd=0xCD params: 08
set_params: cmd=0xB0 params: 00 11 18 0E 11 06 07 08 07 22 04 12 0F AA 31 18
set_params: cmd=0xB1 params: 00 11 19 0E 12 07 08 08 08 22 04 11 11 A9 32 18
set_params: cmd=0xFF params: 77 01 00 00 11
set_params: cmd=0xB0 params: 60
set_params: cmd=0xB1 params: 30
set_params: cmd=0xB2 params: 87
set_params: cmd=0xB3 params: 80
set_params: cmd=0xB5 params: 49
set_params: cmd=0xB7 params: 85
set_params: cmd=0xB8 params: 21
set_params: cmd=0xC1 params: 78
set_params: cmd=0xC2 params: 78
set_params: cmd=0xE0 params: 00 1B 02
set_params: cmd=0xE1 params: 08 A0 00 00 07 A0 00 00 00 44 44
set_params: cmd=0xE2 params: 11 11 44 44 A0 00 00 EC A0 00 00
set_params: cmd=0xE3 params: 00 00 11 11
set_params: cmd=0xE4 params: 44 44
set_params: cmd=0xE5 params: 0A E9 D8 A0 0C EB D8 A0 0E ED D8 A0 10 EF D8 A0
set_params: cmd=0xE6 params: 00 00 11 11
set_params: cmd=0xE7 params: 44 44
set_params: cmd=0xE8 params: 09 E8 D8 A0 0B EA D8 A0 0D EC D8 A0 0F EE D8 A0
set_params: cmd=0xEB params: 02 00 E4 E4 88 00 40
set_params: cmd=0xEC params: 3C 00
set_params: cmd=0xED params: AB 89 76 54 02 FF FF FF FF FF FF 20 45 67 98 BA
set_params: cmd=0xFF params: 77 01 00 00 00
set_params: cmd=0x36 params: 00
set_params: cmd=0x3A params: 66
set_params: cmd=0x21 no params
set_params: cmd=0x2A params: 00 00 01 DF
set_params: cmd=0x2B params: 00 00 01 DF
set_params: cmd=0x29 no params
_st7701s_init.py initialization complete
squixl.py display.init()
squixl.py display.set_rotation() initialization
squixl.py lv.init() initialization
Detect if VBUS (5V) power source is present: raw_value=0
squixl.get_vbus_present()=False
squixl.py initialization complete
mounting freezefs_mount_builtin at /builtin.
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
[AppearanceManager] Setting primary color: 15769616
[AppearanceManager] Initialized: light_mode=True, primary_color=<lv_color_t>
init_rootscreen set resolution to 480x480 at 130 DPI
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
AppManager finding apps...
WifiService: Auto-connect thread starting
AppManager: handling apps got exception: [Errno 2] ENOENT
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
WifiService: No access points configured, exiting
Found launcher com.micropythonos.launcher
Foreground app: com.micropythonos.launcher
Thread 1070340860: executing script with cwd: builtin/apps/com.micropythonos.launcher/assets/
Thread 1070340860: reading script from file builtin/apps/com.micropythonos.launcher/assets/launcher.py
execute_script: reading script_source took 1ms
Thread 1070340860: starting script
execute_script: compiling script_source took 43ms
apps.py execute_script: exec took 14ms
Classes: dict_keys(['DisplayMetrics', 'Launcher', 'Activity', 'AppearanceManager', 'AppManager'])
Functions: dict_keys([])
Variables: dict_keys(['time', '__name__', '__file__', 'ubinascii', 'math', 'uhashlib', 'lv'])
launcher.py onCreate()

Display doesn't work: Backlight will be enabled, but doesn't render anything.

Init looks like:

```
Starting main.py...
sys.version=3.4.0; LVGL (9.3.0) MicroPython (1.25.0) Binding compiled on 2026-03-21
sys.implementation=(name='micropython', version=(1, 25, 0, ''), _machine='Generic ESP32S3 module
with Octal-SPIRAM with ESP32S3', _mpy=11014, _build='ESP32_GENERIC_S3-SPIRAM_OCT')
Free space on root filesystem:
total_space=12517376 / used_space=1712128 / free_space=10805248 bytes
RAM: 4650480 free, 1040 allocated, 4651520 total
Passing execution over to mpos.main
MicroPythonOS 0.9.0 running lib/mpos/main.py
unPhone ?
(emulated) lilygo_t_display_s3 ?
odroid_go ?
fri3d_2026 ?
SQUiXL ?
Detected squixl system, importing mpos.board.squixl
squixl.py initialization
squixl.py init i2c Bus with: scl=2, sda=1...
Scanning I2C bus for devices...
Found I2C device at address: 32 ($0X20)
Found I2C device at address: 54 ($0X36)
Found I2C device at address: 82 ($0X52)
Found I2C device at address: 90 ($0X5A)
Found I2C device at address: 93 ($0X5D)
Create instance of the LCA9555 IO Expander...
Writing to TCA9555: reg=0x6, value=0xffff
Resetting LCD...
Setting LCD backlight ON (BL_EN=0)
Screen soft power EN
5V presense sense IO
IO MUX - EN is Active LOW, so start it off
IO MUX - Set default to I2S - LOW is SD
Haptic EN
Setting LCD backlight OFF (BL_EN=0)
Setting LCD backlight ON (BL_EN=0)
squixl.py RGB parallel bus display initialization
squixl.py ST7701S() display initialization
_st7701s_init.py Send initialization commands to ST7701S...
Using custom set_params_func for initialization
set_params: cmd=0x11 no params
set_params: cmd=0xFF params: 77 01 00 00 10
set_params: cmd=0xC0 params: 3B 00
set_params: cmd=0xC1 params: 0D 02
set_params: cmd=0xC2 params: 21 08
set_params: cmd=0xCD params: 08
set_params: cmd=0xB0 params: 00 11 18 0E 11 06 07 08 07 22 04 12 0F AA 31 18
set_params: cmd=0xB1 params: 00 11 19 0E 12 07 08 08 08 22 04 11 11 A9 32 18
set_params: cmd=0xFF params: 77 01 00 00 11
set_params: cmd=0xB0 params: 60
set_params: cmd=0xB1 params: 30
set_params: cmd=0xB2 params: 87
set_params: cmd=0xB3 params: 80
set_params: cmd=0xB5 params: 49
set_params: cmd=0xB7 params: 85
set_params: cmd=0xB8 params: 21
set_params: cmd=0xC1 params: 78
set_params: cmd=0xC2 params: 78
set_params: cmd=0xE0 params: 00 1B 02
set_params: cmd=0xE1 params: 08 A0 00 00 07 A0 00 00 00 44 44
set_params: cmd=0xE2 params: 11 11 44 44 A0 00 00 EC A0 00 00
set_params: cmd=0xE3 params: 00 00 11 11
set_params: cmd=0xE4 params: 44 44
set_params: cmd=0xE5 params: 0A E9 D8 A0 0C EB D8 A0 0E ED D8 A0 10 EF D8 A0
set_params: cmd=0xE6 params: 00 00 11 11
set_params: cmd=0xE7 params: 44 44
set_params: cmd=0xE8 params: 09 E8 D8 A0 0B EA D8 A0 0D EC D8 A0 0F EE D8 A0
set_params: cmd=0xEB params: 02 00 E4 E4 88 00 40
set_params: cmd=0xEC params: 3C 00
set_params: cmd=0xED params: AB 89 76 54 02 FF FF FF FF FF FF 20 45 67 98 BA
set_params: cmd=0xFF params: 77 01 00 00 00
set_params: cmd=0x36 params: 00
set_params: cmd=0x3A params: 66
set_params: cmd=0x21 no params
set_params: cmd=0x2A params: 00 00 01 DF
set_params: cmd=0x2B params: 00 00 01 DF
set_params: cmd=0x29 no params
_st7701s_init.py initialization complete
squixl.py display.init()
squixl.py display.set_rotation() initialization
squixl.py lv.init() initialization
Detect if VBUS (5V) power source is present: raw_value=0
squixl.get_vbus_present()=False
squixl.py initialization complete
mounting freezefs_mount_builtin at /builtin.
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
[AppearanceManager] Setting primary color: 15769616
[AppearanceManager] Initialized: light_mode=True, primary_color=<lv_color_t>
init_rootscreen set resolution to 480x480 at 130 DPI
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
AppManager finding apps...
WifiService: Auto-connect thread starting
AppManager: handling apps got exception: [Errno 2] ENOENT
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
SharedPreferences.load didn't find preferences: [Errno 2] ENOENT
WifiService: No access points configured, exiting
Found launcher com.micropythonos.launcher
Foreground app: com.micropythonos.launcher
Thread 1070340860: executing script with cwd: builtin/apps/com.micropythonos.launcher/assets/
Thread 1070340860: reading script from file
builtin/apps/com.micropythonos.launcher/assets/launcher.py
execute_script: reading script_source took 1ms
Thread 1070340860: starting script
execute_script: compiling script_source took 43ms
apps.py execute_script: exec took 14ms
Classes: dict_keys(['DisplayMetrics', 'Launcher', 'Activity', 'AppearanceManager', 'AppManager'])
Functions: dict_keys([])
Variables: dict_keys(['time', '__name__', '__file__', 'ubinascii', 'math', 'uhashlib', 'lv'])
launcher.py onCreate()
```
@ThomasFarstrike
Copy link
Copy Markdown
Contributor

Sweet! I guess I should click "Convert to draft" since this is a work-in-progress, since it says the display doesn't work yet...

I think you'll find a way to make it work :-D

If you have some code which does work, like the manufacturer's demo factory app, that often helps in figuring out what's going wrong, comparing registers, settings initialization sequence etc...

@ThomasFarstrike ThomasFarstrike marked this pull request as draft March 23, 2026 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants