Riding a tuned or deristricted EMTB is not a trivial offence and can have serious legal consequences. Also, many manufacturers can detect the use of a tuning device or deristricting method and may decline a repair under warranty if it was modified from the intended original specification. Deristricting EMTB's can also add increased loads for motors and batteries. Riding above the local law limit may reclassify the bike as a low-powered bike, requiring insurance, registration and a number plate.
Be aware of your local country laws. Many laws prohibit use of modified EMTB's. It is your responsibility to check local laws. Ignoring it, has potential implications to trail access, and risk of prosecution in the event of an accident.
We advise members great caution. EMTB Forums accepts no liability for any content or advice given here.
And now, who will be the first brave tester that will install the flow firmware upgrade and see if all still work
View attachment 126698
My flow app version is 1.15.10 (110)
Don’t know about the motor firmware, how can i find that out?
And the speedhack is still working?When my bike was in the shop 3days ago to have the LPP turned on they did several firmware updates.
Wow, I am “half” that far 4.21.0Software version 8.16.0
Wow, I am “half” that far 4.21.0
Is this version compatible with the megabroba speed hack?Software version 8.16.0
I haven’t had time to go on an actual ride with it yet. But it’s working while the bike is held off the ground in a stand.Is this version compatible with the megabroba speed hack?
I haven’t had time to go on an actual ride with it yet. But it’s working while the bike is held off the ground in a stand.
I can’t see how up dating the software would cause problems, due to the simplicity of the Megabobra creating a slower magnet pulse which reflects the actual speed slowing down or going faster. It’s not tied into the Bosch computer system, manipulating it.
Megabobra will have the best response to this question though….
This doesn't look like a sensible option to me : this Wh/km is going to vary greatly based on rider's weight. They sure could have boundaries but a 60Kgs (~132lbs) kit'd rider will have this waaaaaaay lower then, say nrml_mtber and his ~330lbs and Bosch would likely run into huge problems if it came to locking fat bikers engines because they consume too much.I've been trying to figure out how Bosch is detecting tampering. My best guess atm is that they are calculating the energy used per km (Wh/km) based on the sensor speed, and subtracting out hill climbing power which would otherwise swamp any measurements of power usage. They can compensate for hills using an accelerometer, similar to the way an opposing-force power meter works - but I have yet to see a teardown of the gen 4 motor PCB to check if one is present. Based on a roughly-known power usage expected to overcome rolling and air resistance, they can see if the power usage is a bit high from what it should be, and accumulate a deficit in kms travelled. When this gets too high, it throws an error 504 - based on the behaviour over possibly hundreds of kms, obfuscating any obvious cause. So just slowing down the pulse train from the wheel might not get you out of trouble (esp. if you wanted to up the speed a lot) even though it seems to work at first glance.
This is probably why some speed unlocker chips makers tell you to run it after stopping so that the missing kms can be put back, reducing the Wh/km to acceptable levels again. Now Bosch should easily be able to detect and discard this trailing train of pulses from the wheel with no accompanying pedal cadence or torque input. With an accelerometer (which as above they must have to cancel out hill climbing power) they could even detect whether the bike was moving or parked., thus spotting legitimate long downhill runs at the end of a ride. So they will probably, if they haven't already, issue a SW update to do this detection, and I wouldn't rely on it long term.
Agreed. The other thing they can't measure is wind. Gathering evidence for any of this is tricky, since the motors are (possibly deliberately) slow to respond with the error, making it hard to link cause and effect. But if there were more errors on windy rides, hilly rides, or with heavier riders, that would point to the details of any power consumption based algorithm. When this anti-tamper nonsense was first released, they went a bit too hard on it and there were anecdotally many false positives. It would have been useful to see if there was any pattern in them.This doesn't look like a sensible option to me : this Wh/km is going to vary greatly based on rider's weight.
@Koekie posted in another thread a while ago a link to a Bosch patent that's pretty interesting. Based on this I started working a while ago on introducing a H-bridge to the MegaBobra cricuit to simulate the behavior of the electromag passing by the sensor (polarity reversing at the middle of the impulse). We can also see that this is indeed what's happening with the original rim magnet (Thanks @Mervious for doing that test/posting the results) :
View attachment 127643
Whereas the MegaBobra as it is would get this :
View attachment 127648
Took me a while as I had some issues with the code for that but finally got something that seems to work as I want it to and now waitiing for some parts to build a live test device, but this is what would now get output to the magnet instead of a square pulse :
View attachment 127645
Will post diagrams and code update as soon as I have it tested in the field
Also spent some time porting it to ESP32 so I can also play with RemoteXY and get some infos as well as configure the multi on the go
View attachment 127647
Ideally we'd want a precise measurement of what is seen by the hall sensor at various speed or figure out a formula to output such a pulse and according variations in a truthful manner. Right now I'm using the detected pulse time to try and replicate that (or slow it according to the selected reduction factor), which was a pain to code for Arduino tbh due to most of the function that work really well being blocking ones (delay, while loops ...) and therefore getting the rest of the code to freak out eventually due to not being able to run at the right time to catch a reed sensor input or do other useful stuffGood scoping there
There seem to be a few patents around the idea of looking at the waveform of the induced current to determine the wheel circumference (from a known length of magnet). For a spoke magnet and Hall sensor the signal is digital and all you have is the length of the pulse, so that's something that needs to be replicated faithfully in a pulse generator.
I'll keep nosing around those patents, there might be more interesting disclosures to be found. Will post if so.
“Blink without delay”, but I think you know that……, which was a pain to code for Arduino tbh due to most of the function that work really well being blocking ones (delay, while loops ...) and therefore getting the rest of the code to freak out eventually due to not being able to run at the right time to catch a reed sensor input or do other useful stuff
…
if (ReedUpTime>555) {ReedUpTime=555;}
if (ReedDownTime>2000) {ReedDownTime=2000;} // 4000*36
if ( reedswitch.isReleased()) {
if ((PulseCount % 2 == 0) && (PWMup<=0)) { // if (x & 0x01)
PWMpulseStart=LoopTime;
PWMup=1;
//map(ReedUpTime, 500, 0, 30, 255);
PWMpulseDuty = map(ReedUpTime, 555, 0, 40, 255);
analogWrite(PWMPIN,PWMpulseDuty);
digitalWrite(LED, HIGH);
}
doPrintDebug((String)"Cnt:" + PulseCount + " ReedTime Up/Down/PWMpulseDuty:"+ReedUpTime + "/" + ReedDownTime+"/"+PWMpulseDuty);
//Serial.println((String)">ReedUpTime:"+ReedUpTime);
//Serial.println((String)">ReedDownTime:"+ReedDownTime);
}
// if (LoopTime-PWMpulseStart>PWMpulseLength*2) {
if (LoopTime-PWMpulseStart>ReedUpTime*2) {
analogWrite(PWMPIN,0);
digitalWrite(LED, LOW);
PWMup=0;
}
if (PulseCount>SAMPLES+1) {
doPrintDebug((String)"Reset PulseCount:"+PulseCount);
reedswitch.resetCount();
}
//doPrintDebug((String)">Cnt:"+PWMup);
The World's largest electric mountain bike community.