doc: add flashing MM (for v5)

This commit is contained in:
King Kévin 2024-05-15 15:24:23 +02:00
parent 03b9eb3118
commit 702a1cc921
1 changed files with 132 additions and 3 deletions

135
README.md
View File

@ -95,8 +95,8 @@ Test resettable 1.8A input fuse:
- remove the resistor from the 5V screw terminal
- after a second, the green light should turns back on
WLED installation
-----------------
flashing WLED
-------------
You can easily install the latest WLED release, but this will not support DMX.
@ -118,7 +118,8 @@ You can easily install the latest WLED release, but this will not support DMX.
WARNING: Do not select WLED version 0.14.*.
It has a [unknown](https://wled.discourse.group/t/cannot-get-wled-flashed-on-esp32-mini-1/10047) [issue](https://github.com/Aircoookie/WLED/issues/3548) with the ESP32-MINI modules used by WLED chain (probably related to the toolchain), which causes a firmware crash and reboot in a loop.
Older v0.13.3 and Sound Reactive v0.13.4 work fine.
WLED v0.15.* or older v0.13.3 and Sound Reactive v0.13.4 start fine.
The UART interface is still broken, and prevents using [Improv](https://esphome.io/components/improv_serial.html) for WiFi configuration.
If you prefer to use [WLED binary releases](https://github.com/Aircoookie/WLED/releases) and [esptool](https://github.com/espressif/esptool) on the command line instead of the [web interface](https://install.wled.me/), here the commands (set the version to the one wished):
@ -151,6 +152,134 @@ To restart the board and check the debug output:
picocom -b 115200 --lower-rts --lower-dtr /dev/ttyUSB0
~~~
flashing MM
-----------
[MoonModules](https://mm.kno.wled.ge/) (MM) is a fork of WLED.
It is often used to experiment with features that could then be released in WLED.
It also includes numerous usermods, including the DMX IN support our board takes advantage of.
Get the release:
~~~
export MM_RELEASE="0.14.1-beta.30"
wget https://github.com/MoonModules/WLED/archive/refs/tags/v$MM_RELEASE.tar.gz
tar xf v$MM_RELEASE.tar.gz
cd WLED-$MM_RELEASE
~~~
Or get the latest source:
~~~
git clone https://github.com/MoonModules/WLED MM_WLED
cd MM_WLED
git checkout mdev
~~~
Lets define our devices (e.g. the build environments):
~~~
cat > platformio_override.ini << EOF
[platformio]
default_envs = wled_chain_v5
[wled_chain]
build_flags = -D BTNPIN=0
; enable
; -D WLED_ENABLE_DMX ; the DMX output is for fixed values (or RGB), and does not really map the DMX mode of the input. conflicts with WLED_ENABLE_DMX_INPUT
-D WLED_ENABLE_DMX_INPUT
-D USERMOD_AUDIOREACTIVE
-D UM_AUDIOREACTIVE_USE_NEW_FFT ; use latest (upstream) FFTLib, instead of older library modified by blazoncek. Slightly faster, more accurate, needs 2KB RAM extra
; disable
-D WLED_DISABLE_ALEXA
-D WLED_DISABLE_HUESYNC
; debug
${common.debug_flags}
; I did not find how to enable remote debugging
; -D WLED_DEBUG_HOST='"192.168.42.33"' ;; to send debug messages over network to host 192.168.x.y - FQDN is also possible
; -D WLED_DEBUG_PORT=7868 ;; port for network debugging. default = 7868
lib_deps = https://github.com/someweisguy/esp_dmx.git#v3.0.3-beta
; platform = ${esp32.platformV4} ;; else ESP_ERR_NOT_FINISHED is not declared, used by esp_dmx v3.1.0
; v3.1.0 has different API and causes crash during driver install
[env:wled_chain_v2]
platform = ${esp32s2.platform}
platform_packages = ${esp32s2.platform_packages}
board = lolin_s2_mini
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32s2.build_flags} ${wled_chain.build_flags}
;-D WLED_RELEASE_NAME=wled_chain-v2
-DARDUINO_USB_CDC_ON_BOOT=1 # try disabling and enabling unflag above in case of board-specific issues, will disable Serial
-DARDUINO_USB_MSC_ON_BOOT=0
-DARDUINO_USB_DFU_ON_BOOT=0
-DLOLIN_WIFI_FIX ; seems to work much better with this
-D CONFIG_ASYNC_TCP_USE_WDT=0
-D LEDPIN=1
-D STATUSLED=11
lib_deps = ${esp32s2.lib_deps} ${common_mm.lib_deps_S}
${wled_chain.lib_deps}
[env:wled_chain_v4]
platform = ${esp32.platformV4}
platform_packages = ${esp32.platformV4_packages}
board = esp32dev
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32.build_flags} ${wled_chain.build_flags}
;-D WLED_RELEASE_NAME=wled_chain_v4
-D LEDPIN=25
-D STATUSLED=2
lib_deps = ${esp32.lib_deps} ${common_mm.lib_deps_S}
${wled_chain.lib_deps}
monitor_filters = esp32_exception_decoder
[env:wled_chain_v5]
platform = ${esp32.platformV4}
platform_packages = ${esp32.platformV4_packages}
board = esp32dev
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32.build_flags} ${wled_chain.build_flags}
;-D WLED_RELEASE_NAME=wled_chain_v5
-D LEDPIN=25
-D STATUSLED=2
lib_deps = ${esp32.lib_deps} ${common_mm.lib_deps_S}
${wled_chain.lib_deps}
monitor_filters = esp32_exception_decoder
EOF
~~~
To compile the firmware:
~~~
platformio run
~~~
To flash the firmware over UART:
~~~
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 write_flash 0 .pio/build/wled_chain_v5/bootloader.bin
esptool.py --port /dev/ttyUSB0 write_flash 0x8000 .pio/build/wled_chain_v5/partitions.bin
esptool.py --port /dev/ttyUSB0 write_flash 0x10000 .pio/build/wled_chain_v5/firmware.bin
~~~
Somehow the bootloader does not work.
Instead, just flash the one from WLED as shown above.
Once flashed, the WLED status LED on the top left of the corner should blink.
To get serial log with RTS connected to RST and DTR to DL:
~~~
picocom -b 115200 --lower-rts --lower-dtr --imap lfcrlf /dev/ttyUSB0
~~~
installation
============