Skip to content

Instantly share code, notes, and snippets.

@probonopd
Last active June 22, 2025 16:09
Show Gist options
  • Save probonopd/18b3ed65a69d0229eb630c47d7e316dc to your computer and use it in GitHub Desktop.
Save probonopd/18b3ed65a69d0229eb630c47d7e316dc to your computer and use it in GitHub Desktop.

M-VAVE SMK-37 PRO

https://www.m-vave.com/productinfo/1431195.html

The M-VAVE SMK-37 PRO is a MIDI keyboard (controller) with a built-in DX7 compatible FM tone generator.

It would be so much more valuable if the firmware would be open source for the community to modify and improve.

Note to manufacturer

Please give information how we can customize firmware. You will sell more. Thanks!

Information gathering

The firmware update file has the extension .fwsc and contains strings that make it seem probable that it uses a scheme similar or identical to what is described in https://kagaimiq.github.io/jielie/datafmt/newfw.html

So possibly a chip by JieLi Technology is used: https://kagaimiq.github.io/jielie/chips/ is used.

https://github.com/kagaimiq/jielie contains useful information.

Firmware extraction

git clone https://github.com/kagaimiq/jl-misctools
python3 -m pip install crcmod
python3 jl-misctools/firmware/fwunpack_newfw.py /mnt/c/Users/User/Downloads/*fwsc
#
# /mnt/c/Users/User/Downloads/SMK-37 Pro_012.fwsc
#

--- UFW file ---
 chip name: "AC791N"
Firmware base is at @0
  Burner size....: 544
  VID............: b'0.01'
  Flash size.....: $0FF000
  FS version.....: 16
  Block alignment: 16
  Special option.: $FF
  PID............: b'AC791N_STORY\xff\xff\xff\xff'
(top) <JLFS Entry @00000020 - 71C8 @000000A0/000000A0 (     14384/     14384) - 00/00 / 0 -- "uboot.boot">
(top) <JLFS Entry @00000040 - 70D5 @000038D0/000038D0 (       699/       699) - 02/80 / 0 -- "isd_config.ini">
Firmware chipkey from isd_config.ini: 980F
(top) <JLFS Entry @00000060 - FFFF @00004000/00004000 (4294967295/4294967295) - 81/FF / 0 -- "app_dir_head">
(top) <JLFS Entry @00000080 - FFFF @000FF000/000FF000 (      4096/      4096) - 12/01 / 65535 -- "key_mac">
Using chipkey: $980F
(App Area Head) <JLFS Entry @00004000 - BC2A @02000120/00004020 (    616499/    616467) - 83/FF / 0 -- "app_area_head">
Entry point address: 0x2000120
(App) <JLFS Entry @00004020 - CB2D @00000120/00004120 (    615828/    615828) - 82/FF / 0 -- "app.bin">
(App) <JLFS Entry @00004040 - 2E75 @000966B4/0009A6B4 (       383/       383) - 82/FF / 0 -- "cfg_tool.bin">
(App) <JLFS Entry @00004060 - FFFF @0009C000/000A0000 (    147456/    147456) - 12/81 / 0 -- "VM">
(App) <JLFS Entry @00004080 - FFFF @00000000/00004000 (    638976/    638976) - 92/82 / 0 -- "PRCT">
(App) <JLFS Entry @000040A0 - FFFF @000C0000/000C4000 (      4096/      4096) - 92/82 / 0 -- "BTIF">
(App) <JLFS Entry @000040C0 - FFFF @000C1000/000C5000 (      4096/      4096) - 92/81 / 0 -- "USRTRIM">
(App) <JLFS Entry @000040E0 - FFFF @000C2000/000C6000 (    167936/    167936) - 92/81 / 0 -- "USRFLASH">
(App) <JLFS Entry @00004100 - FFFF @000F4000/000F8000 (     40960/     40960) - 92/81 / 1 -- "USR">
(Res) <JLFS Entry @0009A833 - ABBD @00000020/0009A853 (      2937/      2905) - 83/FF / 1 -- "cfg">
====> <JLFS Entry @0009A853 - 017D @00000040/0009A873 (      2873/      2873) - 82/FF / 1 -- "eq_cfg_hw.bin">

Strings like btstack_lowpwer_deal possibly suggest https://github.com/Jieli-Tech/fw-AC63_BT_SDK/ (or similar) being used?

Possbly JL_AC79_DevKit V1.0 is the development environment?

https://doc.zh-jieli.com/AC79/zh-cn/master/board_description/board_overview/index.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment