Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to flash? #1

Open
avenantsoftware opened this issue Jul 5, 2020 · 30 comments
Open

How to flash? #1

avenantsoftware opened this issue Jul 5, 2020 · 30 comments

Comments

@avenantsoftware
Copy link

avenantsoftware commented Jul 5, 2020

A turtorial would be nice and also a howto to compile this code or a precompiled firmware download link with tutorial howto flash.

@DerFetzer
Copy link

You can find some hints regarding flashing in the readme in my repo.

@TheKikGen Cool, that you could use some information from my findings! Very nice project! 👍

@shinyoficial
Copy link

Hi! I've been trying too but I get lost at some point where I no longer have a firmware in the SmartPAD and can't update it. Has anyone done a tutorial yet? It would be very helpful!

@shinyoficial
Copy link

If I get it to work I'll make a friendly YouTube tutorial

@TheKikGen
Copy link
Owner

TheKikGen commented Sep 3, 2020

First, you must upload the bootloader at address 0x08000000, with STM-LINK UTILITY.
You need an ST-LINK V2 stick to do that. It is necessary to open the Smartpad (remove panel from the back), and connect the stick to the CN2 . Pinout is :

  1. GND
  2. SWDIO
  3. SWDCLK
  4. RESET

You must also connect the USB cable for powering the Smartpad
Download the bootloader firmware here :
https://github.com/TheKikGen/stm32-tkg-hid-bootloader/releases

Open ST-LINK utility, and flash the bin file at 0x08000000.

Unplug the STLINK, and the usb cable, and plug again the USB cable to the computer. You should see a new HID device in the device manager (or an lsusb command if under Linux).

Use then the tkg-flash utility to upload the Kikpad firmware

@billyjack669
Copy link

So once the bootloader has been installed via the STLink flash, which file do we send via tkg-flash? You say "the Kickpad firmware" but is that something I compile myself from this project? Is it available somewhere else?

At this point my SmartPad shows up as COM4. What's the next step to make this thing awesome?

@s0len0id
Copy link

this awesome project is a work in progress, documentation too ☺️
The same question came up recently in the Mpc live X and Force hacking modding custom Facebook group:
At the line # 182, uncomment //#include "mod_kikpad MPCForce.h" and comment all other modules above

@billyjack669
Copy link

billyjack669 commented Aug 11, 2021

Thanks. I had seen that comment area but decided to uncomment the mod_kikpad_MPC.h instead (since I have no idea what I'm doing or which module does what specifically.)

My thought is that I verify / compile, export then flash it with TKG-flash.exe
Once I have this working I'll put together the steps I used to make it go and possibly even throw a Youtube video together.

Also, thanks @s0len0id for the tips and your reverse-engineering project. I'll join the FB group as well.

@billyjack669
Copy link

That didn't seem to work either. No COM port anymore, and the unit will appear in Windows for a bit "We are setting up TKG BTL" but then it seems to disconnect.

If this process turns out to be out of my league, can I use the ST-Link to push the SmartPad firmware back to the unit?
What steps are needed to revert to that firmware?

@martynpiper
Copy link

@billyjack669 I'm actually having the same issue as you.

@billyjack669
Copy link

@billyjack669 I'm actually having the same issue as you.

Good LOL, I'm glad I'm not the only one. I really want to use this as an Ableton controller (a Novation Launchpad type device honestly, this unit's got a lot of potential). If you come up with anything please share! One of the bootloaders will make it become a COM port again, and sometimes it says it's a maple COM port (depending on which bootloader you flash.)

@luteijn
Copy link

luteijn commented Aug 30, 2021

I haven't gone much further than opening up one of my two smartPADs, a V0.13 PCB is inside, located the CN2. Next step will probably have to be soldering some pins/a header on CN2. From what I gather I can then flash tkg_hid_midiplus_smartpad.bin using the ST-LINK and screw the back on the device again.
Next step is then to set up an arduino ide again and use that to connect to the bootloader over the normal usb connector and flash either one of the example/test modules from the repository, or make something myself along those lines to have the device do something interesting when buttons are pressed, knobs are turned or light up some pads if note on midi events are sent to it.
I guess it could even be turned into a self-contained gadget that uses the usb only for power, but for me it would make the most sense for it to be set up to send/receive midi messages over usb-midi to a host, and then I'd process those in a separate program on the host.

The firmware bit seems straightforward enough and the people above seem to have managed that bit with the guidance provided. I also don't worry too much about writing my own midi-controlled program either (or just use some existing midi enabled software).

The tricky bit is building the software to run on the pad. It's been a while since I did anything with the arduino environment, but I did manage to get use it to program bare 'at-tiny' microcontrollers, some esp based boards and of course various arduino's in the past, so I'll probably get it to work by googling 'using STM board with arduino' or something like that, but it might be nice to get this kickstarted with some explanation of the setup of the arduino programming environment used by the author.

@TheKikGen
Copy link
Owner

TheKikGen commented Sep 1, 2021

Of course a more complete documentation would be comfortable for the users. Keep in mind that I'm doing these projects for free in my spare time though, and that I also have professional activities that keep me quite busy.

I invite you to contribute to the documentation and post your suggestions, additions.

That being said,

You need to flash the tkg-hid bootloader in your Smartpad with ST-Link stick.
To check if everything is ok, reboot the Smartpad : you should see a HID device in your usb peripherals.

About Arduino environment : I use the Roger's core for stm32.

Follow the instructions there to install this core after the Arduino platform setup.
Try to compile some examples from the "File/examples" menu to check if the ARM compiler works.

The STM32F103RBT6 is used for the Smartpad. I have adjusted the configuration files for this uC.

You will find here my full stm32duino package you can copy in your (home)/Arduino/hardware directory.
You need to restart the Aduino IDE you copied.

Install the midixparser library in your Arduino libraries directory : https://github.com/TheKikGen/midiXparser/archive/refs/heads/master.zip

In the Arduino IDE, you need then to choose STM32F1 boards (stm32duino in sketchbook), then STM32F103RB variant.
About Kikpad : at first use the mod_kikpad_demo.h that is a basic midi keyboard sending notes.
Uncomment from the line #176

// Kikpad functionnal module.Uncomment only one.

#include "mod_kikpad_demo.h"
//#include "mod_kikpad_MPC.h"
//#include "mod_kikpad_MPCClipsTest.h"
//#include "mod_kikpad_MPCClipLauncher.h"
//#include "mod_kikpad_MPCForce.h"

It is important to known that the upload method (bootloader) will change the start address of your binary, during the linking process. Choose "Tkg HID bootloader 3.1" in the tools/upload method menu.

Compile with ctrl+R. If everything is ok, get the binary in your working directory with ctrl+alt+S, the file shoud be named "kikpad.ino.generic_stm32f103rb.bin". At this point, use the tkgflash utility to upload the binary into your kikpad the first time, or if update, switch the Kikpad to update mode (see below=.

For all modules, you can :
// RESET = HOLD BT_CONTROL4 & MASTER8 THEN PRESS SET
// UPDATE (bootloader mode) = HOLD MODE2 & MASTER7 THEN PRESS SET

@TheKikGen
Copy link
Owner

TheKikGen commented Sep 1, 2021

Attached a binary file for the kikpad demo module. Compiled for tkg hid bootloader.
mod_kipad_demo.generic_stm32f103rb.bin.zip

@luteijn
Copy link

luteijn commented Sep 1, 2021

#1
=== phase 1 - bootloader ===
0) open up pad, locate CN2 and solder on some wires/header/pins. install openocd and stlink tools from distro repository; get the tkg bootloader and flash stuff from
https://github.com/TheKikGen/stm32-tkg-hid-bootloader/releases

  1. connect st-link to CN2 (reset to 4, clk to 3, io to 2 and gnd to 1) and to pc via usb (lsusb shows mine as: Bus 001 Device 018: ID 0483:3748 STMicroelectronics ST-LINK/V2

  2. power up pad via usb ( Bus 001 Device 020: ID 1acc:3801 Midiplus Co, Ltd. ) and bulk erase microprocessor via mass-erase:
    $ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c init -c "reset halt" -c "flash banks" -c "stm32f1x mass_erase 0" -c "stm32f1x unlock 0"
    (as per https://github.com/DerFetzer/open-cleverpad - but I have a v2 stlink, so using that config file), then power-cycle the pad, lsusb no longer shows it, as it is now a tabula rasa (all ones showing up as 0xFF when dumping memory with st-link)

  3. use stlink utility to flash a new bootloader to the blank microprocessor.
    I used the 3kb file tkg_hid_midiplus_smartpad.bin and flashed it to x08000000 via the gui.

  4. powercycle pad again (replug usb); check vi st-link that indeed the bootloader is now in the device memory and lsusb shows a new device, in my case: Bus 001 Device 042: ID 1209:beba Generic serasidis.gr STM32 HID Bootloader
    now you can unplug the st-link from CN2, make sure the wires/header/pins soldered to CN2 won't short anything and close the pad up again.

=== phase 2 - flashing the demo module ===
0) got the precompiled demo module from
https://github.com/TheKikGen/kikpad/files/7090902/mod_kipad_demo.generic_stm32f103rb.bin.zip
as I didn't feel like setting up the arduino IDE stuff yet.
This needs to be flashed with tkg-flash, which I already had from phase 1 step 0

  1. luteijn@diana> sudo ./tkg-flash mod_kipad_demo.generic_stm32f103rb.bin

+-----------------------------------------------------------------------+
| TKG-Flash v3.1 STM32F103 HID Bootloader Flash Tool |
| High density device support. |
| (c) 2020 - The KikGen Labs https://github.com/TheKikGen |
+-----------------------------------------------------------------------+
Build : 3.210129.1521

Searching for [1209:BEBA] HID device...|
[1209:BEBA] HID device found !
Firmware file size is 20692 bytes.
Main stack pointer : 0x20005000
Reset handler : 0x080021E1
Waiting for INFO block...
INFO - Informations reported by the bootloader :
Firmware version : 0310
MCU Flash memory size : 128 K (medium density device)
Page size : 1024 bytes
Page offset : 4 pages
Flash base address : 0x08001000
Flashing firmware :
START command sent successfully.

[++++++++++++++++++++++++++++++++++++++++++++++++++] 21504 bytes sent.
** Checksum error. Firmware could be corrupted. !

Firmware flashing done !
21 sectors written.
TKG-Flash end.
luteijn@diana>

This seems to work but that checksum error is worrying. Also, nothing much seems to have changed in lsusb output. Sometimes when plugging in the pad. some of the leds have some activity, but somehow looks like the module isn't started... Warrants another try sometime soon though.

@luteijn
Copy link

luteijn commented Sep 2, 2021

My next step should probably be to check via st-link what was actually flashed to 0x08001000 and check out the issues in the bootloader repo - maybe also try to flash from a win10 machine, maybe it's just a linux issue with the tlg-flash utility
Or manually merge bootloader and module binaries and flash the whole thing with st-link tools...
Or first get the arduino environment set up, which I'll hace to get round to eventually, as I do want to make my own stuff, not just load pre-baked binaries...

30 min later, after a shower:
Tried something else: instead of using the prebuild binary of tkg-flash, made a local version. No Checksum error with that, but will need to test a bit more later.. work first.

@TheKikGen
Copy link
Owner

The demo works on your Smartpad ?

@luteijn
Copy link

luteijn commented Sep 2, 2021

Seems to work fine, from the quick tests I did this morning before work: the pads light up with a logo, then form a piano keyboard which sends out note events on the channel that is selected by the edge buttons over the usbmidi. Knobs send controller events (volume I guess) on different channels.

I do need to test and try out a little more, as it looks like I currently need to keep the st-link physically wired up to keep the software running, I guess the little 3-4 cm long wires I soldered on the CN2 port pads may act as antennas and trigger resets if I leave them floating. Maybe I'll need to use resistor to pull the reset line up (or down), or a capacitor to short any HF picked up to gnd.

Then hopefully I can get a build environment set up, and try messing around with loading a custom hacked version of the demo module...

@luteijn
Copy link

luteijn commented Sep 2, 2021

So, continuing the step-by-step of someone working back from "I have a nice midiplus pad with crap stock software and I want to improve that"-point of view:

After compiling a local copy of the tkg-flash utility, it worked without checksum error:
luteijn@diana> pwd
/home/luteijn/devel/midiplus_pad/stm32-tkg-hid-bootloader-3.11/cli
luteijn@diana> make -f Makefile.linux
gcc -c -Wall -I./hidapi/hidapi -I../hidapi pkg-config libusb-1.0 --cflags tkg-flash.c -o tkg-flash.o
gcc -c -Wall -I./hidapi/hidapi -I../hidapi pkg-config libusb-1.0 --cflags rs232.c -o rs232.o
gcc -c -Wall -I./hidapi/hidapi -I../hidapi pkg-config libusb-1.0 --cflags hidapi/linux/hid.c -o hidapi/linux/hid.o
gcc tkg-flash.o rs232.o hidapi/linux/hid.o pkg-config libudev --libs -lrt -lpthread -o binaries_dist/tkg-flash
luteijn@diana> cd binaries_dist/
luteijn@diana> diff tkg-flash ../../../tkg-flash
Binary files tkg-flash and ../../../tkg-flash differ
luteijn@diana> sudo ./tkg-flash ../../../mod_kipad_demo.generic_stm32f103rb.bin

+-----------------------------------------------------------------------+
| TKG-Flash v3.1 STM32F103 HID Bootloader Flash Tool |
| High density device support. |
| (c) 2020 - The KikGen Labs https://github.com/TheKikGen |
+-----------------------------------------------------------------------+
Build : 3.210902.0620

Searching for [1209:BEBA] HID device...|
[1209:BEBA] HID device found !
Firmware file size is 20692 bytes.
Main stack pointer : 0x20005000
Reset handler : 0x080021E1
Waiting for INFO block...
INFO - Informations reported by the bootloader :
Firmware version : 0310
MCU Flash memory size : 128 K (medium density device)
Page size : 1024 bytes
Page offset : 4 pages
Flash base address : 0x08001000
Flashing firmware :
START command sent successfully.

[++++++++++++++++++++++++++++++++++++++++++++++++++] 21504 bytes sent.
No checksum error.

Firmware flashing done !
21 sectors written.
TKG-Flash end.
luteijn@diana>

As mentioned I had a bit of trouble getting the midiplus_pad to start reliably, but at the moment it works with the st-link disconnected from the board, and the 'header'-wires folded reasonably flat. I've only put back the center screw for now, so re-opening shouldn't be too much work if I do need to adjust anything.

With the demo-module running, I see a device with ID 2912:1975 instead of the bootloader one in the lsusb output.
Not sure what mode_2/Master_7/Set should do, I'd expected it put the device into bootloader mode, but it doesn't seem to interrupt the application at all. Anyway, Control4/Master_8/Set does reset the pad and the bootloader device briefly shows up, so I expect to be able to flash another application by starting the tkg-flash, and while it is waiting, reset. Or just replug usb.

Next step for me will be to get the arduino development environment set up, and see if I can get a version of the demo locally built flashed on the device. While trying to get that done, I figured out that bootloader mode is actually Control4/Master_7/Set as per the kikpad.ino file.

=== phase 3 - arduino environment setup and test ===
0) As per the hints above and wiki of Roger's core, I got the older version of arduino software from their website (1.8.5), followed the instructions to set it up (using the provided clone of TheKikGen's own Arduino_STM32 directory in the hardware folder), and struggled a little getting the right options set under tools, but managed to get it set up: Tools->Board: Generic STM32F103R Series, then Variant: STM32F103RB. Then upload method can be set to "TKG HID bootloader 3.1".

  1. Compiling the kikpad sketch with the include for mod_kikpad_demo.h set by itself worked, but uploading that wouldn't really help me much, as it wouldn't be clear if it worked, or the original one would still be in, so I changed a few more minor things: colors in the corners of the KikGenLogo were changed from WHITE to GREEN in the kikpad.ino file and the right GREEN pad on the keyBoardPadColors was changed to a MAGENTA one.

  2. Ctrl-R to verify/compile and Ctrl-Alt-S to export the compiled binary, followed by some looking around to find the binary as it was not in what I considered my working directory, but in the one that the kikpad.ino file was in.

  3. Press Ctrl4/M7/Set to get to bootloader mode. Hmm, where did I put that working tkg-flash version again... good thing I logged this morning's adventure... ah, yes there it is:
    luteijn@diana> sudo ../stm32-tkg-hid-bootloader-3.11/cli/binaries_dist/tkg-flash kikpad.ino.generic_stm32f103rb.bin
    [sudo] password for luteijn:

+-----------------------------------------------------------------------+
| TKG-Flash v3.1 STM32F103 HID Bootloader Flash Tool |
| High density device support. |
| (c) 2020 - The KikGen Labs https://github.com/TheKikGen |
+-----------------------------------------------------------------------+
Build : 3.210902.0620

Searching for [1209:BEBA] HID device...|
[1209:BEBA] HID device found !
Firmware file size is 20700 bytes.
Main stack pointer : 0x20005000
Reset handler : 0x080021E1
Waiting for INFO block...
INFO - Informations reported by the bootloader :
Firmware version : 0310
MCU Flash memory size : 128 K (medium density device)
Page size : 1024 bytes
Page offset : 4 pages
Flash base address : 0x08001000
Flashing firmware :
START command sent successfully.

[++++++++++++++++++++++++++++++++++++++++++++++++++] 21504 bytes sent.
No checksum error.

Firmware flashing done !
21 sectors written.
TKG-Flash end.
luteijn@diana>

  1. When midipad is plugged in and after waiting for the short bootloader delays, the modified K logo shows, with the green corners. Press any pad to continue and indeed there is a magenta pad 55 on the right, which goes green when the green pad 48 is pushed. Success!

  2. It looked like the functionality of the transposing buttons wasn't complete, so as my first somewhat useful change, I hacked in something to do on press/release of the pad 55 (or anything mapped to -3), by copying the else if blocks from pad 48 (-2) and changing -2 to -3, and -=/+= to +=/-=. Not the nicest way to do this as a lot of duplicated code, but 'hey, it works' - after compile/export/flash/restart I can now transpose down AND up (or both at the same time for no effect):

diff --git a/mod_kikpad_demo.h b/mod_kikpad_demo.h
index 208d7c1..f2a731e 100644
--- a/mod_kikpad_demo.h
+++ b/mod_kikpad_demo.h
@@ -161,6 +161,22 @@ void KikpadMod_ProcessUserEvent(UserEvent_t *ev){
             PadSetColor(55, GREEN);
           }
         }
+        
+        else if (keyBoardMap[i] == -3 ) {
+          midiNoteTranspose += 12;
+          if ( midiNoteTranspose > 0) {
+            PadSetColor(48, GREEN);
+            PadSetColor(55, CYAN);
+          }
+          else if ( midiNoteTranspose == 0) {
+            PadSetColor(48, GREEN);
+            PadSetColor(55, GREEN);
+          }
+          else {
+            PadSetColor(48, CYAN);
+            PadSetColor(55, GREEN);
+          }
+        }
       }
 
       break;
@@ -194,6 +210,22 @@ void KikpadMod_ProcessUserEvent(UserEvent_t *ev){
             PadSetColor(55, GREEN);
           }
         }
+        
+        else if (keyBoardMap[i] == -3 ) {
+          midiNoteTranspose -= 12;
+          if ( midiNoteTranspose > 0) {
+            PadSetColor(48, GREEN);
+            PadSetColor(55, CYAN);
+          }
+          else if ( midiNoteTranspose == 0) {
+            PadSetColor(48, GREEN);
+            PadSetColor(55, GREEN);
+          }
+          else {
+            PadSetColor(48, CYAN);
+            PadSetColor(55, GREEN);
+          }
+        }
       }
 
       break;

Next phase will probably be to make a more or less transparant I/O device out of my pad, with almost no logic running on the device, just translate presses into midi events, and incoming midi events to leds lighting up, with maybe some way to define a color palette, double buffering or text scroll, so I can forget all about the uC programming again for a while and do the rest with some scripting on the host side.

Merci for the extra hints/explanation on getting the toolchain to work for me, hopefully my logs here also help someone else.

@billyjack669
Copy link

Your kikpad demo binary worked on my SmartPad too. I ran tkg-flash with the bin, plugged in the USB, it flashed.
After a reboot I got your custom Kikgen logopads then pressed a pad and it worked.

I'm going to use your above method to get everything in my Arduino IDE etc. then I'll start tinkering to verify that I can compile and flash locally.

Are any of the currently available kikpad modules compatible with Ableton or are they all geared toward the MPC?
I would expect I could just customize the midi controls in Ableton to get it to recognize knobs and pads at least.

Also, I'd be quite excited to go through your code and comments to proofread. I've just never used Github to do that.

@luteijn
Copy link

luteijn commented Sep 5, 2021

First try at turning the midiplus pad into a generic controller, gzipped as .bin isn't supported on the site:
kikpad_io.bin.gz
Modifications made to the source:
diff.txt

Basically, this makes it so the smartpad sends unique midi notes (velocity 127) for each pad (0-63) and button (64-87), and the knobs are controllers 0-8, which are initialized at 63. It also listens for incoming feedback notes and lights up the corresponding pad with the received velocity as the color (and buttons just go on/off). It also updates the internal value for the controllers when it gets a CC.

Program changes are (for now) ignored, and unknown message types are (partially) dumped in the first 4 rows.

Just looping it back to itself works fine, but I already noticed I'll need to handle the case where a note on with velocity 0 is used as a note off (as is often done, e.g. by the launchpad X I did a small test with) a little better: pads just go black anyway as 0 is all colors off, but buttons stay on as to them this was a note on... Just another if statement I guess. I might also add something to handle the polyphonic aftertouch events sent by the launchpad, even if it is just to ignore it for now.

The idea is that with this module, you can just use an external program's learning functionality, or some sort of midi-remapping filter without doing any programming on the SmartPAD (or DumbPAD, as all the intelligence would be in the external program).

@luteijn
Copy link

luteijn commented Sep 5, 2021

As a minor followup: I've also successfully flashed my second SmartPAD to something more usable, didn't even have to solder anything on CN2 this time, just stuck some old slightly oversized pins in the jumper wires of my cheap Chinese clone-link to change the gender, opened the SmartPad up, and held this ghetto-probe on the CN2 pads, using the holes to help alignment. Hardest part was to press Enter on the command line of the bulk erase command with the 'wrong' hand and finding I had to retype my password for sudo with it too. Luckily I use the mouse with my left hand so could then just push the GUI button to flash the bootloader, and then had both my hands available to go up a few commands and restart the tkg-flash from earlier.

Now I just have to put those 14 and 15 little screws back in my new KIKPADs before I accidentally knock the tray that holds them over..

Thanks to all involved in turning this thing into a much more interesting toy than it was. Stock, it's probably at most a mediocre midicontroller, but especially for the price I paid on sale, they are now a nice devboard for both learning more about microcontroller development, and doing experiments in midi I/O in e.g. python. Probably not that hard to turn it into a usb-serial device or usb-keyboard and low-res display to drive from programs made in a 'teach my kids to code'-project so they don't have to learn about midi or mess with breadboard and loose through-hole components from my junkbox first, but can just turn on some LEDs or read a button state from the DumbPAD.

ghetto-probe

@s0len0id
Copy link

s0len0id commented Sep 5, 2021

cool stuff all around, awesome! Looking forward to all your smartpad experiments 👍

@billyjack669
Copy link

@luteijn - Can you add your code for the I/O module (and the other code you spellchecked, etc.) to a pull request or whatever it's called so it might get merged? I'd personally like to have your additions added because the extra module is cool and definitely a springboard for yet another Kikpad use case.
I have a lot of ideas for customizing the Kikpad's LEDs via button / pad combos, rotary turning, etc., but I'm pretty weak on deciphering what the code does to begin with.

@luteijn
Copy link

luteijn commented Sep 7, 2021

Sure, I'll try to find some time one of these days to make a fully clean version against the repository as I couldn't completely suppress my inner grammar-nazi and changed 'HOLDED' to 'HELD' etc, in just a few places, but not in the modules not used. Bit busy with non-hobby stuff this week, so for now the binary and diff will have to do, until I relearn how to prepare a pull request and maybe figure out any (c) issues there might be.

@TheKikGen
Copy link
Owner

In summary, for a quick run :

Once the kikpad is connected to the STLINK :

1/ Upload the tkg_hid_midiplus_smartpad.bin to the Smartpad from the bootloader only directory at 0x08000000
Last release here : https://github.com/TheKikGen/stm32-tkg-hid-bootloader/releases/tag/V3.11

2/ Pickup one of the pre-compiled binary
kikpad.mod_MPC_stm32f103rb.bin
kikpad.mod_demo_stm32f103rb.bin
kikpad.mod_force_stm32f103rb.bin

3/ Upload it with STLINK at 0x8001000 or use tkg_flash utility to do that for you

Disconnect Kikpad from USB and remove STLINK connector.
Plug again in your computer. You should see a KIKPAD midi device.

@air-v
Copy link

air-v commented Feb 26, 2022

In summary, for a quick run :

Once the kikpad is connected t

Hi @TheKikGen ,
I've flash the SmartPAd with all .mod_X binaries and they're working smoothly when i run on MPC ONE with normal mode but none of them are working on IAMFORCE mode like it showed on your kikpad's videos.
If you can post your bin file it should help.

Thx

@air-v
Copy link

air-v commented Feb 26, 2022

"kikpad.mod_force_stm32f103rb.bin" looks like much clip launcher for MPC than Force matrix button. Can you confirm me that ?

@TheKikGen
Copy link
Owner

TheKikGen commented Feb 27, 2022

the last version of IamForce is not built in the same approach than the original POC shown in video last year.
All Force buttons and pads are emulated in the Kikpad firmware (mod MPCForce).
The Button of the MPC are not processed.
If you want to use it with the last IamForce, you must add the "--tkgl_ctrlname=KIKPAD" command line parameter.

The new version is an entirely rewritten one. It allows MPC keys remapping + (as soon as possible) an external 64 pad device.
I'm currently integrating the Launchpad mini mk3 with this version.

Then, I will add a new KIKPAD firmware module that will be compatible with the Launchpad midi implementation.
So, Kikpad will become a Launchpad (mod_LaunchpadMK3).

MPCCLipLauncher is indeed a 64 surface clip launcher.

@air-v
Copy link

air-v commented Feb 27, 2022 via email

@TheKikGen
Copy link
Owner

TheKikGen commented Feb 27, 2022 via email

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

No branches or pull requests

9 participants