Removing speed limit of Tenways CGO600 and CGO600 Pro for free
Posted by BeerPong1024@reddit | ebikes | View on Reddit | 150 comments
There is a guide about how to reverse engineer the firmware of the Tenways CGO600 and CGO600 Pro, edit it to remove the speed limit, and upload it to the bike: https://suffix-trie.github.io/
If you don't have the knowledge or interest to follow it, you can go to the last section, download the "hacked" firmware directly, and just follow the instructions on how to upload it to the bike.
I've tried it on my CGO600 Pro. It's free and it worked. Hopefully other people find it useful too and the overpriced iapp speed hack goes out of business.
Good_Caterpillar_537@reddit
Is there a way to undo it and remove the file? I uploaded it a year ago but would like to get back to the normals speed.
Thanks everyone
BroadInvestment2013@reddit
Zojuist de firmware aangepast op de CGO600, de oude versie. Fiets gaat nu inderdaad 32km/h. Bij 32kmh voel je wel dat de motor niet meer wil en gaat hij een beetje stotteren. Het is ook echt 32kmh. Ik heb het gecheckt met de GPS. Display geeft ook netjes de nieuwe snelheid aan. Ik had gehoopt dat dit er voor zou zorgen dat je de fiets wat zwaarder kan laten fietsen, meer zelf doen. Dat is niet het geval. De fiets fietst hetzelfde maar dan met een wat hogere topsnelheid. Op het laagste niveau ondersteuning ga je makkelijk 30.
Update gedaan met een iphone en de app nRF Connect. Werkt perfect. Eerst het zip bestand openen in het appje, Fiets aanzetten, verbinden via het appje. Als je verbonden bent met de fiets druk je op het meest rechter icoontje, de twee pijltjes in een cirkel voor het updaten. Je ziet daar meteen de firmware staan en je drukt op start. 1 minuut later staat de firmware op je fiets en gaat de fiets uit. Je kunt dan de fiets weer aanzetten en gaan fietsen.
Ik ga het een paar dagen zo proberen maar ik denk dat ik hm uiteindelijk weer terug zet. Het zou fantastisch zijn als de firmware zo ingesteld kon worden dat je minder trapondersteuning krijgt.
Ik weet dat er iemand is die nieuwe software voor dit display heeft gemaakt: https://github.com/anszom/SW102_LCD hier in heb je ook de mogelijkheid om de power assist levels aan te passen. Het assistentie niveau kun je aanpassen van nul tot 200%. Als je bijvoorbeeld 10% assist kiest dan betekent dat dat de kracht die je zelf levert 10% aangevuld wordt door de motor. Met 100% levert de motor net zoveel kracht als jij. Met 200% levert de motor 2x zoveel kracht als jij. Het zou fantastisch zijn als dit ook werkt op de CGO600. Ik zie alleen dat dit gemaakt is voor een bafang motor. Mijn motor is een myways motor.
Level_Impression4584@reddit
Ik weet dat deze thread al lang bestaat, maar is er misschien een manier om de walkassist snelheidslimiet te verhogen/ eraf te halen net zoals trapondersteuning
Appropriate-P1e@reddit
Just to make sure. Since Tenways is charging a lot for a replacement Mini Sw102 Lcd Display (+ shipment costs) I guess buying one at onother place and then uploading the firmware like in the manual is possible?
SnooDogs1680@reddit
Shipping costs were free for me, but indeed the display form Tenways seems to only have the Tenways logo, but e.g. error codes are the same as on other bikes with SW102, which is 30 euro on AliExpress vs 69 at Tenways.
Appropriate-P1e@reddit
The logo is in the firmware for as far as I know. Updating any compatible display should show the logo.
docmax2@reddit
Does it still work on current CGO600 and CGO600 Pro models?
Appropriate-P1e@reddit
Only the classic versions.
docmax2@reddit
and how do i identify a classic version?
Appropriate-P1e@reddit
Easiest: color display vs black-and-white. Look at the Tenways website for more details.
Appropriate_Fun5339@reddit
Is there a way I could or someone else could tune the controller even more. So like more current flow or other cook things?
deenesba@reddit
Downloaded the app and the .zip but the app does not open the zip. Any suggest?
TonniBonde@reddit
I got the same problem
Unfair_Carry_3480@reddit
Download the zip file on your PC/Mac and then transfer it to your device
Few-Version-1976@reddit
J'ai acheté vélo électrique cgo600 le mon de passe inconnu Y a-t-il quelqu'un qui puisse m'aider ?
Africmod@reddit
This is a nice alternative! But since it is still illegal to ride +25 km/h on the open road in Europe people might still want a way to toggle... I might actually try to add it in there.
The guy also revers to a library from SenneRoot https://github.com/SenneRoot/VELOX . I made this board and ordered some. Still have about 15 left, if anyone is interested I sell them for 60 EU (I wont be making more since I am not trying to start a business...). They work exactly like the iapp speed hack. Just send me a message on Reddit!
yesnoisclear@reddit
Are you still selling those? Can you toggle it stealthily on and off?
Africmod@reddit
Yes and yes. It does not seem to work on the new color display tho. But the old black and white one is fine! You can toggle it with the walking mode (hold down for 2s)
FriendlyAd1904@reddit
Where can I buy it from you?
exeramosm@reddit
Did you find a way to add a toggle functionality to the hacked firmware?
Africmod@reddit
No I gave up man, I was a low priority for me anyways since I already have a little box 😅
BobtheWind@reddit
Just tried this by downloading the files and using the DFU app to upload to the bike, it starts ok but when it tries to upload the files to the bike, the bike display unit turns off and the upload fails 😔
BobtheWind@reddit
update
I got it to work, the issue was in the settings on the DFU app, the PRN setting was off by default, by turning it on and trying the upload again, it was successful. Just went out for a quick spin and 31kph was easily achievable 🥳
Alarmed-Bad2766@reddit
Turning the PRN setting just to ON did not resolved the problem in my case by itself! Additionally I decreased the "Number of packets" to 6 and it worked out at the first try. Perfect!
DazzlingMulberry1938@reddit
Thanks pal, 🙏, appreciate it!
Working-Tomato9925@reddit
Tried this and it worked a charm! Thanks so much
Scrapemist@reddit
Does it change the limit displayed in the menu?
Appropriate-P1e@reddit
Good tip!
Xameg1@reddit
The issue persists: the bike display unit continues to turn off, resulting in a failed upload. Could this problem be related to the latest version of Android on the phone?
Xameg1@reddit
Update: Flashing using an old tablet with an outdated Android version finally worked. Crazy.
Alone-Malone@reddit
I had the same issue and using and old Android phone did the trick, thanks for the tip!
Affectionate_Seat473@reddit
Hi can someone please send me the original firmware in a dm, since the link is not working anymore
Appropriate-P1e@reddit
Strange. It seems in section 2 of the tutorial the link still works.
Diligent-Shop-625@reddit
Is there any way to go back to 25kph or is it just 32 Kph the whole time?
Appropriate-P1e@reddit
The limit is off. The motor stops only at 32 or 33 km/h because it's not capable of providing more speed (too weak). The only way you can go back to 25 km/h is by uploading the original firmware again. There is a way of making a 28 km/h one though if you want a hard speed limit where the motor cuts off and you will not get assist.
Ivamr@reddit
Does this also works for the Tenways CGO800S from 2023?
Appropriate-P1e@reddit
No. The 800s has a different display and other firmware.
aero_sock@reddit
Any ideas what might causing this? It just fails to load the firmware it seema
aero_sock@reddit
Tried everything - PRN, MTU, number of packets, different phone. The model is sw102/2.
Effective-Twist-@reddit
Also curious for a solution, same problem here. Tried with an older Android version; Tenways Bike screen went black after a second and same error appeared in app
aero_sock@reddit
an update:
i tried it with 3 other phones(for 6 total) and only the last one worked. it was redmi note 7 with android 10. another xiaomi with android 10, older androids, newer androids, other brands - nothing worked. so ask your partner/friends/family whoever and eventually it should work.
worked for me with stock nrf app settings btw.
Effective-Twist-@reddit
Thanks! It also worked with an older android phone here!
aero_sock@reddit
so far it's been my father trying to do this who has the bike in another country and will bring it to me in 2 weeks. im a little more tech savvy than him so i'll report back if i succeed
Effective-Twist-@reddit
Thanks! It also worked with an old android phone here!
CaviArie@reddit
Please update to 2025 model with color screen 🫶🏻
reader7519@reddit
Ff checken voor de zekerheid. Als je die mod ga uitvoeren. Voel je dan nog wel een verschil in ondersteuning tussen stand 1,2 en 3 of krijg je dan 1 maximale stand en ondersteund hij tot +30km per uur?
reader7519@reddit
Kan iemand mij helpen met het "opvoeren" van mijn CGO600 met de oudere display, eventueel tegen een vergoeding? Ik woon in omgeving Utrecht :-)
No_Structure_1029@reddit
I agree with you iapp is really overpriced but you still have to show some respect. He is doing honest business and he is not scamming anyone. I know your just jealous on him, because he is making some good money.
Africmod@reddit
Like I said I am basically making the same thing for about half the price... And even then I make a lot on it... It is material wise about 15 EU per thingy....
Best_Ad_609@reddit
Heb je nog een te koop dat ook werkt voor een kleuren display?
Africmod@reddit
Helaas werkt is niet met het kleuren display.
Middle-Tale-726@reddit
Kan je een versie maken voor de nieuwe cgo600 pro met het kleurenscherm
Middle-Tale-726@reddit
Where can i find the already made hacked firmware. Bcs i dont understand how to do it myself :)
ptless1@reddit
Do you know if there is a version for the new ones? Color display
Appropriate-P1e@reddit
Someone would have to extract the firmware first and send it to BeerPong1024 then maybe he could take a look.
I-am-not-warlizard@reddit
Does anyone have experience performing this for the 2025 model of the CGO 600 Pro? Since the firmware used here was released a while ago, and the 2025 model has an improved display, I am skeptical whether this works.
dane_v@reddit
Yeah the newer ones have the SW102T screen. I'm planning to try and pull the software off mine in a few weeks via j-link, no clue if possible. If anyone has already played with it please lmk.
ApprehensiveRule2554@reddit
Did you manage to do it?
dane_v@reddit
Haven’t gotten to it yet, but I will probably have a spare screen to fool around with soon
Active-Usual-6000@reddit
Hi ! Any update on this ?
Best_Ad_609@reddit
Heeft iemand toevallig een oplossing voor de CGO600 met kleurenscherm?
Historical-Waltz7949@reddit
Hey man any update?
Shadiezz@reddit
lmk what you find, very interested as I have a CGO600 on the way ;)
Best_Ad_609@reddit
Ik heb nu een tenways CGO600 pro new edition met Klein display gekocht. Weer iemand of ik deze ook gratis kan opvoeren?
Appropriate-P1e@reddit
Someone has any luck with adjusting the PAS levels in the firmware?
knifter@reddit
Ben je hier nog verder mee gekomen? Ik zou dit ook graag veranderen. Ik heb de 'new model', dus ik moet sowieso uitzoeken of en hoe de firmware te veranderen.
Appropriate-P1e@reddit
No, unfortunately. Looks like the PAS mode values are in the controller firmware in stead of the display firmware (only the speed is defined in the display firmware and WHICH PAS mode, but not the strength of each).
Anyway if someone thinks otherwise and has more luck with this, I'm very interested.
New model: you could ask Tenways to send you new controller.
knifter@reddit
Alright, thanks. I'd rather had that changed then a higher to speed tbh. Thanks for looking into it anyway!
Jurjee@reddit
Did you end up figuring this out? I really dislike the PAS with the limit of 50 km/h.
Appropriate-P1e@reddit
This post was about the PAS levels. Maximum speed and PAS levels are different things. I did create a display firmware that goes up to 28 km/h instead of limitless, but the PAS levels are as before.
I also wanted less assist for PAS1 and PAS2 to get more range and to be able to make it possible for you to do more work yourself. PAS3 would then remain the same (and PAS2 with the same values as PAS1 now). Unfortunately it did not work. I fear that the extent of the PAS levels is determined in the controller firmware and not in the display firmware. So I had no luck with this.
Appropriate_Fun5339@reddit
Im having problems uploading the new firmware does anyone have a solution for this?
Appropriate_Fun5339@reddit
Hey is this hard to do im not to good at tuning and firmfare editing. I got a cgo600 myself does it effect the battery life bad?
Pjotr151@reddit
Is this also possible with the new 2025 CGO600 Pro?
Nothirsty@reddit
Anyone else facing issues with connecting to the Tenways app after this firmware update?
Dakloos@reddit
I can’t connect with the Tenways app anymore after removing the speed limit. Did you find a fix for it?
Nothirsty@reddit
No, even after going back to the regular firmware it wouldn’t connect to the app. So im not using the app, not sure how useful it was anyway.
Appropriate-P1e@reddit
Maybe remove your bike in the app and or remove the app and add the bike/install again?
Nothirsty@reddit
Tried that, but doesn’t seem to work
DecentWoodpecker5100@reddit
I just bought the last cgo600 new edition. Guess the firmware is different since they changed the screen. Have asked the support for the firmware but they won't give it away apparently.
Lucky_Luke_2021@reddit
I get the GATT CONNECT TOMEOUT error, any suggestions? I have the good display SW102/2 EU display
Appropriate-P1e@reddit
Set PRN setting to ON als also decrease the "Number of packets" to 6 ?
Lucky_Luke_2021@reddit
I did that - in vain
Lucky_Luke_2021@reddit
I finally succeeded with an old Android tablet. Seems like newer Android versions don't work. Now I even have the switch on and off option, well, with 2 displays and just awitching the cable :))
Appropriate-P1e@reddit
Great.
Haha! First one I see with two displays. Where did you buy the second one? At Tenways or third party?
Lucky_Luke_2021@reddit
I actually bought a wrecked Tenways cgo600 for parts (tried to transplant the hub motor and torque sensor on a cgo800). So I ended up wit extra battery, display, and other parts
Active-Usual-6000@reddit
Is there a similar solution for the new Pro version ?
Fresh-Spell-3183@reddit
Am I interested too?
matthiasnico@reddit
Does this also work on the new CGO 600 Pro with the color screen?
BeerPong1024@reddit (OP)
No sir
Fresh-Spell-3183@reddit
Will it be possible in the future? Do you just have to wait or is it no longer possible with the 2025 version?
BuggyMcBhug@reddit
Im considering trying this,got the files and the app...
Anyone confirm if it still works? Also waht is worst case if it doesn't? Am I left with a really expensive pedalbike? :D
Thx
IllustriousCrew5043@reddit
Hey, can you comment on the different power levels please! Does it still provide more power at level 3 than level 2, and more power at level 2 than level 1? Thanks!
BuggyMcBhug@reddit
everything is as it was ....except the assistance limitation is gone :)
Ramruj2@reddit
Can you confirm this? Since some people say that it removes the PAS functionality, seems a bit weird to me, as it should only indeed remove the limiter
Stifmeister686@reddit
Just tested it, definitely different power on the three different levels like before but without the speed limit
Ramruj2@reddit
Yes I have done the mod on 2 bikes and I love it!
IllustriousCrew5043@reddit
Thanks!
Shadiezz@reddit
I just did it, my display looks like this: https://imgur.com/a/4knuXFL - and it worked right away, screen went off, I turned it on and it now goes about the 30 km/h
uniextra@reddit
i cant get my phone to see the bike over bluetooth, its on and unlocker and in DFU app it does not show as CGO600 or anything... how did you do it?
Shadiezz@reddit
Are you connected to it on Bluetooth?
IllustriousCrew5043@reddit
Can you still go through the 3 power levels? Or is there only one power level now?
Shadiezz@reddit
it seems as though the power levels do nothing, and its all the same
IllustriousCrew5043@reddit
Thanks for the info- I can see that being kind of annoying- most of the time I just have it on level 1 as I don’t need all the power, how have you found it?
Shadiezz@reddit
its 50/50. on full battery its kind of annoying since you can't really paddle with resistance, when it gets to around 70-80%ish battery the motor keeps you on about 28 km/h and you have resistance
Shadiezz@reddit
I would love to have it where level 1 would be just the 25 or something, so it "scaled" up and power level 3 would be 30 km/h
IllustriousCrew5043@reddit
That would be great! But does power level 3 still provide more power than level 2, and level 2 more than level 1?
Shadiezz@reddit
I dont think it does
HUGE_GO@reddit
bro! this works great, i did the hole thing and than found out you can just download your file and the app.... oeps ty do!
uniextra@reddit
I turned my bike on but i cant see it on the Bluetooth on the app, do you have to do anything special for it to appear?
Away-Monitor8915@reddit
I have a brand new CGO600Pro Mint green with a color OLED display, does anybody knows if there is a solution to remove te speedlimit for this model?
BeerPong1024@reddit (OP)
You could try to replace the color display with an old one and see if it works
Appropriate-P1e@reddit
Tenways says that does not work and you would at least change both display and controller.
-OHO-@reddit
Update after 4 months OP? Any unexpected side effects? Appreciate you posting this!
BeerPong1024@reddit (OP)
I haven't had any problems
Wiebbe@reddit
It seems this doesnt work for a certain type of Display? I have the following one, with the button on the side not the front.
funny-cat-221@reddit
Did you get it to work? I have the same display. I do not think its compatible with the guide in OP.
Wiebbe@reddit
No, i did not. I was not even able to connect the app to check what kind of chip i had.
PretendFix6290@reddit
Same here, but I could connect the display using the nRF Connect App from nordic. It showed some data, but I wasn't able to extract something useful there...
BeerPong1024@reddit (OP)
I can't say whether it will work just by looking at this picture. When you connect to it with the DFU updater app what do you see?
Queasy_Juice_2528@reddit
Ça ne passe pas chez moi et j’ai l’écran avec le bouton sur le côté
https://imgur.com/a/ygt1dPw
Huge-Strength9868@reddit
hello bike friends. I tried to install the firmware but nothing works for me, could you tell me what the problem is? I just turned on the bike, downloaded the firmware on ios, also the dfu program, connected, it was done, and my screen turned off, after that, I turned it on and nothing changed, in the section I also have a 25 km limit, also I tried to change the packet numbers to 6/12/24, no result, after that I also tried to do it on andoid huawei, I get an error even though I changed the packet numbers, and the screen of the bike just restarted.
BeerPong1024@reddit (OP)
Mmm the limit shown in the picture doesn't change with the hacked firmware. Have you tried pedaling above 25km/h?
Huge-Strength9868@reddit
Oh, no, I haven't checked that, but how will I know if the firmware has worked? Will the bike help me go to 33km?
Huge-Strength9868@reddit
hello bike friends. I tried to install the firmware but nothing works for me, could you tell me what the problem is? I just turned on the bike, downloaded the firmware on ios, also the dfu program, connected, it was done, and my screen turned off, after that, I turned it on and nothing changed, in the section I also have a 25 km limit, also I tried to change the packet numbers to 6/12/24, no result, after that I also tried to do it on andoid huawei, I get an error even though I changed the packet numbers, and the screen of the bike just restarted.
Appropriate-P1e@reddit
Nice work and interesting! I have a few questions right away.
Would it be possible to adjust PAS 1 and 2 to different support percentages? I find the support a bit too strong and would like to contribute more with leg power and get a bit more range from the battery.
For example, if the current settings are PAS1 (100%), PAS2 (200%), and PAS3 (300%), could they be adjusted to: PAS1 (50 or 60%), PAS2 (100%), and PAS3 (300%, so unchanged)?
Would it also be possible to set the speed limit to 27 km/h instead of 30 km/h? Just slightly lower but still within a reasonable margin.
Thanks in advance for your response!
BeerPong1024@reddit (OP)
I believe both your ideas are indeed possible. Setting the speed limit to 27kmh is "easy" if you follow the guide from start to end. To change the support you would have to explore the decompiled firmware quite a bit, but it should be possible.
Appropriate-P1e@reddit
I did try some things but unfortunately no luck for adjusting the PASlevels (1 and 2). Too complicated for me to understand.
Do you have a clue or like to see for yourself how to adjust PASlevels with other values than the default?
I know there's demand for this from lots of users (actually to add a 4th PAS (eco-mode) but I guess that's not an option due to the controller, don't know). Happy to buy you a couple cups of coffee.
Cheers.
Appropriate-P1e@reddit
Thank you!
I may get into the PAS-modes it but I'm affraid it's above my understanding of of this.
The VELOX .h file says:
enum class PAS
{
level_0 = 0x00,
level_1 = 0x0C,
level_2 = 0x02,
level_3 = 0x03,
walking = 0x06
};
funny-cat-221@reddit
I tried the github guide (both modifying bin & download link at end) and I keep getting this error:
I have a CGO600 (US Version). I don't have the SW102 display as the M button is on the side instead of the front face.
Do you think it would ever be possible to remove the speed limit for this earlier version? Are there any alternatives?
Appropriate-P1e@reddit
Why do you want to remove the speed limit when you have a US version? I don't think the mivice m70 (or the m80) is capable of riding at much higher speeds than 32 km/h (too high cadence aside). The motor is simply not build for this.
It will cause more stress on the cogs and produce heat which will have consequences for the lifespan. Also the battery would dilver more current which lead to heat buildup and stresses the cells, shorten the lifespan.
BeerPong1024@reddit (OP)
Your best bet would be to buy a sw102 display and replace the current one in my opinion
Shadiezz@reddit
Do you know if it also works on new CGO600's? or is it constrainted to specific models of it? (I'm thinking of buying the CGO600)
BeerPong1024@reddit (OP)
It works on the CGO600 if the display is the same as the one in the guide (SW102).
Shadiezz@reddit
https://imgur.com/a/4knuXFL which is this one, right?
BeerPong1024@reddit (OP)
Yes
Shadiezz@reddit
it worked! thank you! :)
Remote_Picture_5691@reddit
Hi, maybe you could help me as well. I got the FW and the DFU app on my phone..(pixel 8 latest FW). now I ticked the right boxes and entered only 6 "number of packets.
so...the file shows up in the App
device "CGO600" is found via BT
progress start...does nothing at all, but 4 red X
any advice on that, please?
thx
Shadiezz@reddit
no idea, I use iOS
Remote_Picture_5691@reddit
thx... I tried iPad but then I get the message vom the DFU app when entering the zip file ..."manifest.json" missing...which is not...
Appropriate-P1e@reddit
I'm having troubles in editing the file for my goal to set the max speed at 28 km/h.
I get stuck halfway section 4 at renaming the variables, seems like there are steps missing in the tutorial? (of course this is lack of knowledge from my side).
Can't I just edit the already hacked firmware file this way:
Open a project in Ghidra, then open and press Analyse. Then scroll to the addresses in the non-decompiled) listing, in this case 0000a6dc, 0000a6e0, 0000a6e2 and change the values (though Patch Instruction) 0x1 and 0x7f to this values for 28 km/h:
max_RPM_data[0] = 0x0;
max_RPM_data[1] = 0xd7;
See attached image(circled in red)
Then Export and zip etc.
For the CRC I then get decimal: 10500 hex little endian: 0429 when running the python program at sw102.bin
Have not tried to upload it to the bike though.
Thanks in advance!
BeerPong1024@reddit (OP)
You are correct that renaming the variables is not necessary.
How did you calculate the values 0x0 and 0xd7? Seems correct but it might be worth it to check.
Make sure not to change the 0x1 that you circled at address a6e2 because that has to do with the location in memory where the speed limit is saved, not with the value of the speed limit. (To be extra clear: change the first 0x1 you circled on top and the 0x7f only)
Good luck, you are doing great!
Appropriate-P1e@reddit
Thank you very much!
I calculated the values 0x0 and 0xd7 by changing this line in de C++ program:
calculateRPM(28, b1, b2);
And also pasting it into ChatGPT :)
Thanks, so I can skip address a6e2.
NoPatience420@reddit
This does not work for the newer models, I presume? I mean the 2025 version of the CGO 600 pro.
BeerPong1024@reddit (OP)
Unfortunately not, Tewnways have changed the display.
exeramosm@reddit
Amazing!! Would it be possible to add somewhere in the firmware a rule to add back the limit by pressing the down button or similar?
BeerPong1024@reddit (OP)
Thanks! I tried but it was difficult and i gave up
fancypants123@reddit
If you do this is it possible to put the original firmware back on if you had to?
BeerPong1024@reddit (OP)
Yes, it is possible to restore the 25 km/h limit. The guide has a link to the original firmware in section 2 "Obtaining the firmware of the display". You can download that, and upload it to your bike like you uploaded the "hacked" firmware. Let me know if it worked!
Far_Strawberry7515@reddit
Has there been any issues using the hacked firmware? I'm not that technical so I'm worried about breaking something critical or this suddenly not working anymore, but the last section with the already hacked software looks straightforward enough. Do you have any other recommendations for this? Like removing the Tenways app connection perhaps?
BeerPong1024@reddit (OP)
If you are able to upload the hacked firmware, then you will definitely be able to upload the firmware with the speed limit.