Festool Bluetooth Adapter - working with old Minis

ntlord

Member
Joined
Dec 29, 2021
Messages
17
Hey all,

I have an older Mini vaccum cleaner that is incompatible with the bluetooth modules. I recently bought a Shaper and got a little annoyed with all the bending back and forth--so I wanted to find a solution. I have a fair amount of background in reverse engineering RF devices though. So on a whim, I decided to buy one of the bluetooth adapters. To make a long story short, I was able to figure out how it worked enough to get it to work with one of these relay socket devices:
https://shop.m5stack.com/collections/atom-series/products/atom-socket-kit-hlw8023-jp-us

Basically all you do is plug your vaccum into that device, and keep it on manual. The remote does the rest of the work. If folks are interested, I can clean up the code a bit, and post it on github. For now, what I have is pretty basic, but with a little bit of work, I could set it up so that it can pair with multiple different remotes too.

Edit: I should add one important detail--this does not require the receiver to work. I've figured out how to get it to work with just bare remote. The device I linked to captures the signals directly because it has a chip inside of it with bluetooth LE capability.
 
ntlord said:
Hey all,

I have an older Mini vaccum cleaner that is incompatible with the bluetooth modules. I recently bought a Shaper and got a little annoyed with all the bending back and forth--so I wanted to find a solution. I have a fair amount of background in reverse engineering RF devices though. So on a whim, I decided to buy one of the bluetooth adapters. To make a long story short, I was able to figure out how it worked enough to get it to work with one of these relay socket devices:
https://shop.m5stack.com/collections/atom-series/products/atom-socket-kit-hlw8023-jp-us

Basically all you do is plug your vaccum into that device, and keep it on manual. The remote does the rest of the work. If folks are interested, I can clean up the code a bit, and post it on github. For now, what I have is pretty basic, but with a little bit of work, I could set it up so that it can pair with multiple different remotes too.

Edit: I should add one important detail--this does not require the receiver to work. I've figured out how to get it to work with just bare remote. The device I linked to captures the signals directly because it has a chip inside of it with bluetooth LE capability.

I can't wait to see actual working image/video for this! I'm all in for this! :)
 
I wouldn’t expect it to operate too much differently than the real deal. I haven’t tested, but I’m confident that 7 meters would be no problem.
 
ntlord said:
Ask and you shall receive



This is awesome! So what do I do? I'm about to order the socket adaptor. You mentioned about coding, where do you input those coding to?
 
It basically runs arduino code. So you’d need to set up arduino studio to work with it. Then just upload the code once I post it. M5Stack has a nice tutorial on their site for setting up Arduino. The device is called an “atom”. There may be even an easier way. Let me look into it over the next few days, and I’ll post instructions.
 
ntlord said:
It basically runs arduino code. So you’d need to set up arduino studio to work with it. Then just upload the code once I post it. M5Stack has a nice tutorial on their site for setting up Arduino. The device is called an “atom”. There may be even an easier way. Let me look into it over the next few days, and I’ll post instructions.

So this socket adapter is connected to computer first, input coding into it, then it's all set to go with Mini? I then have to buy BT switch and pair it somehow?  Sorry for asking so much.. but super excited! :)
 
You load the code once, then no computer needed after that. And then there will be a way to initiate “pairing” on the device after you’ve loaded the code. You pair the remote and then you are done.
 
ntlord said:
You load the code once, then no computer needed after that. And then there will be a way to initiate “pairing” on the device after you’ve loaded the code. You pair the remote and then you are done.

Perfect! Can't wait for your next update! :)
 
Ok, here it is:
https://github.com/ntlord/FestoolBluetooth

Instructions are on the page. Note, I haven't tried this with any more remotes than the one I have, but I expect it should work fine. I've ordered another remote, but I'm travelling for the next few weeks, so I might not get to mess with it until next month. But I can respond to this thread if others run into issues.
 
ntlord said:
Ok, here it is:
https://github.com/ntlord/FestoolBluetooth

Instructions are on the page. Note, I haven't tried this with any more remotes than the one I have, but I expect it should work fine. I've ordered another remote, but I'm travelling for the next few weeks, so I might not get to mess with it until next month. But I can respond to this thread if others run into issues.

Thanks so much! :) Quick question.  Will my CT15 MINI still work with wired tools as usual? This is just adding remote function, right?
 
All this does is switch on and off the main electric to the vacuum, so it should still work fine. Just keep in mind that if you are going to use auto mode, you’ll need to turn on the relay by pressing the Bluetooth button once. But after that it should work as you would expect.

I should add that this device is also pretty powerful. It has wifi built in as well as current/voltage monitoring. I don't use any of that currently as I don't see the need. But if others have ideas on any new features, I'm happy to entertain them. It also can integrate with a whole host of other modules, such as any of these:https://shop.m5stack.com/collections/m5-sensor/SENSOR
 
ntlord said:
Ok, here it is:
https://github.com/ntlord/FestoolBluetooth

Instructions are on the page. Note, I haven't tried this with any more remotes than the one I have, but I expect it should work fine. I've ordered another remote, but I'm travelling for the next few weeks, so I might not get to mess with it until next month. But I can respond to this thread if others run into issues.

Hi, any chance you could help me to run this code on a generic esp32 devkit module? I have capacitive load remote device for old mini which connects to the power takeoff socket and for now I use cheap 433mhz chinese remote module but would rather switch to Festool remote. Also some time ago I have found on github the library for festool bluetooth. This would be even better as the remote as well as batteries could be actually paired. Unfortunately I can’t find it anymore (the name of the github was not obvious for Festool.

UPDATE: found the library!https://github.com/gilbertf/libft
and an url to fog topic:https://www.festoolownersgroup.com/...t-series-dustcleaner-remote-control-protocol/
have no clue how to use it…
 
I’m happy to help. But I guess I’m not sure what you are trying to do. Can you explain a little more. I looked at that library but I’m not exactly sure what it is intended to control

Edit: I guess I’ll add. Why not just use the module I linked to? Are you outside of US?
 
Hi. Sorry, I should have been more precise. My device is a "fake" load that will trigger the vac in auto mode when plugged in to the power takeout socket. It is just a simple motor run capacitor and a 433MHz remote relay (see detailed pictures in my gallery)

CTL Mini Remote Gallery

The advantage of this solution is that the auto function remains active all the time

Now I would like to implement (or add) a Festool remote due to it's nice design and fit on the hose. I'm got the m5stack ATOM module only as I will trigger my own relay. Now I need to get the remote itself  [smile]

Would you know if it would be possible to use another GPIO pin to connect 433MHz receiver to support both festool and 433MHz remotes? Any ideas how to tackle it?
 
I've purchased the M5 Atom socket kit device and installed the code on it. Unfortunately, it does not work for me.

Doing a little debugging I see that it is crashing while trying to pair:

Code:
====checkForButtonPress: set mode to PAIRING (1)
19:43:55.577 -> >>>>pair
19:43:56.295 -> >>>>pair 1
19:43:56.295 -> >>>>pair 2
19:43:56.295 -> >>>>pair 3
19:43:56.295 -> >>>>pair 4
19:43:56.295 -> >>>>pair 5
19:43:56.295 -> >>>>pair 6
19:43:56.295 -> [  3782][V][BLEScan.cpp:385] start(): >> start(duration=1)
19:43:56.295 -> [  3782][V][FreeRTOS.cpp:189] take(): Semaphore taking: name: ScanEnd (0x3ffdb9a0), owner: <N/A> for start
19:43:56.295 -> [  3791][V][FreeRTOS.cpp:198] take(): Semaphore taken:  name: ScanEnd (0x3ffdb9a0), owner: start
19:43:56.295 -> [  3800][V][BLEScan.cpp:417] start(): << start()
19:43:56.295 -> [  3804][V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 2 0x02
19:43:56.328 -> [  3804][V][FreeRTOS.cpp:63] wait(): >> wait: Semaphore waiting: name: ScanEnd (0x3ffdb9a0), owner: start for start
19:43:56.328 -> [  3803][V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
19:43:56.328 -> [  3830][V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
19:43:56.361 -> [  3838][V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 7 0x07
19:43:56.361 -> [  3838][V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
19:43:56.361 -> [  3854][V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
19:43:56.361 -> [  3862][V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 3 0x03
19:43:56.395 -> [  3862][V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
19:43:56.395 -> [  3878][V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
19:43:56.395 -> [  3885][D][BLEAdvertisedDevice.cpp:472] setRSSI(): - setRSSI(): rssi: -60
19:43:56.395 -> [  3892][V][BLEUtils.cpp:746] advTypeToString():  adv data type: 0x3
19:43:56.395 -> [  3892][D][BLEAdvertisedDevice.cpp:292] parseAdvertisement(): Type: 0x03 (), length: 2, data: 6ffd
19:43:56.433 -> [  3908][D][BLEAdvertisedDevice.cpp:500] setServiceUUID(): - addServiceUUID(): serviceUUID: 0000fd6f-0000-1000-8000-00805f9b34fb
19:43:56.433 -> [  3918][V][BLEUtils.cpp:746] advTypeToString():  adv data type: 0x16
19:43:56.433 -> [  3918][D][BLEAdvertisedDevice.cpp:292] parseAdvertisement(): Type: 0x16 (), length: 22, data: 6ffd9c17ba02a8679fb39e259a132486900006ace052
19:43:56.433 -> [  3936][D][BLEAdvertisedDevice.cpp:519] setServiceDataUUID(): - addServiceDataUUID(): serviceDataUUID: 0000fd6f-0000-1000-8000-00805f9b34fb
19:43:56.467 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
19:43:56.467 ->
19:43:56.467 -> Core  0 register dump:
19:43:56.467 -> PC      : 0x40090a8c  PS      : 0x00060e30  A0      : 0x8016b178  A1      : 0x3ffd03c0 
19:43:56.467 -> A2      : 0x00000013  A3      : 0x0000000f  A4      : 0x000000ff  A5      : 0x0000ff00 
19:43:56.467 -> A6      : 0x00ff0000  A7      : 0xff000000  A8      : 0x73654600  A9      : 0x3ffd07f0 
19:43:56.500 -> A10     : 0x3ffdc800  A11     : 0x00000013  A12     : 0x3ffc4ae8  A13     : 0x00000000 
19:43:56.500 -> A14     : 0x00001004  A15     : 0x3ffb6c68  SAR     : 0x00000008  EXCCAUSE: 0x0000001c 
19:43:56.500 -> EXCVADDR: 0x00000013  LBEG    : 0x40090aad  LEND    : 0x40090abd  LCOUNT  : 0xffffffff 
19:43:56.500 ->
19:43:56.500 ->
19:43:56.500 -> Backtrace:0x40090a89:0x3ffd03c00x4016b175:0x3ffd03d0 0x401721aa:0x3ffd06e0 0x401721e6:0x3ffd0770 0x400db86e:0x3ffd07b0 0x400d23f1:0x3ffd0850 0x400d740d:0x3ffd08f0 0x400d57fe:0x3ffd09e0 0x400ebdf5:0x3ffd0a40 0x401144f5:0x3ffd0a60 0x4011639f:0x3ffd0a80
19:43:56.535 ->
19:43:56.535 ->
19:43:56.535 ->
19:43:56.535 ->
19:43:56.535 -> ELF file SHA256: 0000000000000000
19:43:56.535 ->
19:43:56.535 -> Rebooting...

I'll keep trying to debug but I wonder if anyone else who is more knowledgeable about this stuff has any ideas about what might be going on?
 
Got the M5Stack Atom Lite and Festool remote and it is crashing the same way as above. I have actually managed to pair it using different power supply. It still crashes on every remote button press.

Code:
rst:0x1         ▒]I=9}IMQ▒,boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
Scanning...
M5Atom initializing...OK
Printing stored remote addresses:
d3:a3:ab:xx:xx:xx
Received Button click from:  d3:a3:ab:xx:xx:xx
                                               Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x00000024  PS      : 0x00060c30  A0      : 0x801648a0  A1      : 0x3ffc7970
A2      : 0x3ffc2438  A3      : 0x3ffc79d0  A4      : 0x3ffc7a40  A5      : 0x00000001
A6      : 0x00000024  A7      : 0x00000000  A8      : 0x80164614  A9      : 0x0000000a
A10     : 0x00000001  A11     : 0x0000000a  A12     : 0x3ffdba0c  A13     : 0x3ffb7fbc
A14     : 0x3ffc2438  A15     : 0x3ffc79d0  SAR     : 0x00000020  EXCCAUSE: 0x00000014
EXCVADDR: 0x00000024  LBEG    : 0x40090aad  LEND    : 0x40090abd  LCOUNT  : 0xffffffff

Backtrace:0x00000021:0x3ffc79700x4016489d:0x3ffc79d0 0x400d274a:0x3ffc7a70 0x400d2762:0x3ffc7ad0 0x400d9f0d:0x3ffc7af0

ELF file SHA256: 0000000000000000

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
Scanning...
M5Atom initializing...OK
Printing stored remote addresses:
d3:a3:ab:xx:xx:xx

 
With a great help of [member=77192]ntlord[/member] I was able to enable atom to react to Festool remote!

First of all there seem to be a problem with libraries in Arduino as my compiled binary would crash on remote button press. [member=77192]ntlord[/member] has shared his own binary which I have loaded and it works perfectly. He was also able to compile two other variations for me: one with reversed logic on g23 - the GPIO which triggers the relay in the M5Stact socker kit (LOW - on, HIGH - off as I have used simple relay module with atom, not the socket kit and my module is enabled on low level) and another one with default logic on g23 but reversed logic on g33. This one should run on the M5Stack socket kit. Links to binaries below in my fork of ntlord's project.

The easiest way for me to load them to Atom was to use ESPHome flasher (ESPHome Flasher Github). The precompiled executable does not require any additional software to run.

Original binary (works with M5Stack socket module, g23 default LOW): Github binary default (G23 LOW)
mod1 binary (g23 default HIGH): Github binary G23 HIGH
mod2 binary (works with M5Stack socket module, g23 default LOW, g33 default HIGH): Github binary G23 LOW, G33 HIGH

Also for those who are interested in taking this to the next level, I have used 20uF motor run capacitor to successfully trigger CTL Mini. This allows me to keep it in AUTO mode and use both remote and tool triggering (by a nice mutli socket power lead) - see my google photos gallery for some details (with old 433mhz remote module but the idea is the same): Festool CTL Mini remote module. This setup draws about 1W when idle and 11W when on.

Basically my relay is connecting the cap to the power take off socket of the vac and this is enough to trigger it. One of the cap terminals is connected permanently to neutral while the other is connected to the COM terminal of the relay. NO goes to live while the NC goes via 39ohm, 1W resistor back to neutral. This will discharge the cap when in the off position (not really needed, just for extra safety). Please mind that the cap must be motor run, not a motor start one as these are not rated for permanent connection to live. Also I live in 230V country.

I recommend to read more in this EEVBlog post: https://www.eevblog.com/forum/projects/makita-(jdm)-vacuum-remote-start/

Hope that helps.
 
That's really interesting since I got my new TSC-55 and it starts to annoy me with my CT-22. Do you think it could be possible to pair the bluetooth batteries with this system?
 
Back
Top