*Thank you all for your comments! One thing I forgot to mention is that the Android PC is completely non-responsive. It draws very little current and looks like its memory chip is either dead or corrupted. Without access to the programming tools and the software there is very little chance of actually fixing it. This, combines with the huge amount of tracking software it originally had, I decided to just remove it all together.*
Tracking software as in tracking the training or as in tracking the user like for example a cookie or tracking pixel on websites? Ah sorry, 2 minutes later in the video and its sadly the latter one. Never mind. Another 4(?) minutes later, let me add some value: In your code, line 57, the "resValues" array is missing the commas for 6 values at the end.
Fantastic episode! Information like this will allow us to make smarter purchasing decisions, but also reiterates the importance of right to repair, service manuals and component availability. I have repaired many devices and appliances with just $2 worth of components whereas the industry would much prefer it be thrown away and a replacement item purchased. Props for protecting your outbound network access - it really should be the default for all border routers.
Very impressive work. I have an S22i that is a little over 3 years old and it is now dead. I wish I had the skill and knowledge to do a project like this. Thanks for sharing.
I congratulate you on spending the time and effort to avoid throwing away otherwise usable equipment. Excellent. I imagine more and more things will stop working after the Apps are abandoned or the controllers fail.
I used a software called Blynk to control my espresso machine (ESP32 based PID controller). There used to be a local webservice you could run in Docker and then use an app to build a simple dashboard, for example for setting up the target temperature. Now they want you to use some SaaS subscription and killed the app/
@@Thesignalpath yeah, you're video got me to look for some touchscreens to get rid of all the app based configuration and put a proper interface on the espresso machine. Or maybe I write a web based application. But sadly I'm too busy with thinking around with 868 MHz devices with LoRa or telegram splitting and Matter/Thread. And it still makes espresso.
Yeah, I've been slacking on getting a pi-hole installed. That's now added to my yacc shaving list. I especially 'like' the bait and switch NordicTrack used to take $150 from you and then present you with a massive bill to replace their android computer. It's great being an engineer. Congrats on the resurrection.
@@lbgstzockt8493 The warranty on the bike is 2 years for parts, and one year for labor and only to the original purchaser. It is clearly stated in the limited warranty terms printed in the owners manual, so it is not illegal, nor even scummy. It's in the contract. If you don't like the terms of the contract, don't buy the product.
I love this solution. Based on your experience with their customer support, NordicTrack is banned from our house as well. I didn't want to purchase a subscription model bike so I put together my own solution with a Matrix brand bike. It came with an LCD TV mounted to the unit. I replaced it with a ViewSonic brand Andriod PC that's meant for Kiosk applications. That gave me a nice big, (fully open software-wise), touch screen. The Matrix bike sends all the needed data over FiTness Machine Service (FTMS) Bluetooth protocol. I'm able to pick that up with KinoMap software which works really well and has a lifetime buy in option. It's far superior to a pay forever model!
The original design of the bike is, as you point out, this incredible mismash of extreme complexity and bone-simple solutions. What I find surprising is I was able to implement a flywheel-less exercise bike with a BLDC motor, FOC controller, and encoder that seems like it would be able to do the same job as the NordicTrack but at lower BOM cost, drastically less weight, and substantially lower mechanical complexity. The main downside is that the motor controller is a lot of electronics for an exercise bike - but if you're already putting 3-4 fairly complex submodules into the bike, what's a motor controller that replaces two of them? NordicTrack's design philosophy here seems totally incoherent, both from an engineering and business perspective. Great video, thank you!
Assume that the people who made the controller boards aren't the ones that make the whole training bike. There is a bit of an argument against using a generator as a brake, as humans have peak power output of 250W when pedaling, and probably can sustain 100W. That's not a small figure of heat you have to remove from a bunch of MOSFETs, without active cooling or overly large heat sinks. The way they are doing it is to dump that heat into the flywheel.
@@Broken_Yugo But then you still have to dump it into a rather small mass and keep that below a certain temperature, plus it can't be an exposed part to avoid the user burning himself. And you might have to cool it for more than an hour sustained. It's at least not trivial.
The flywheel (although heavy), combined with magnets is a dead simple solution. The wheel also automatically cools down since it is spinning. But I like the solution you are proposing. You can do some interesting things with it.
@@graealex Use that to charge some batteries or supercaps. That's how the exercise bikes at Intel work, plug in your tablet or smartphone to charge it. (Sadly, it predates USB-PD.)
Most likely this would be more achievable in a timely fashion than the level of work required to effect that kind of repair. Also be didn't seem to really like the spyware in the computer anyway
I put a pinned comment at the top for this question since a few people asked. But short story is that the memory chip on the unit was likely dead. Without access to software & tools for this custom board, I don't think I had a chance of fixing it.
Sounds like a con company. "Yes its under warranty" "You just have to pay Labour, $150 ", Send an engineer out to tell you what you already know, "Yes the android computer is broke, and Oh! it's not under warranty, give us $1000 if you want the parts for it". Definitely scamming as they know from serial number if warrantied or not. Could have instantly said this before the $150 scam
NordicTrac is a huge exercise machine manufacturer, making far too much money to need to squabble over some warranty claim. Never discount incompetence and plain old poor customer service. I worked as a freelance field service engineer for a few years, they almost certainly contracted a local freelance tech and paid them most of that $150, and the person he spoke to during the last call was probably wholly unaware of the first call, as he purchased the unit used they aren’t likely to be keeping up with his correspondence like they might with a registered customer (further contributing to the lack of competence and/or service). Selfishly, we should be happy for their piss-poor service, as we get to watch a rather interesting process of hardware integration as a result!
I think it is just sheer poor management on their side. They also want to make the claims as difficult as they can for the customer. For example, once the technician visits, the customer has to call back again, wait for 2 hours on hold, to order the parts! They don't do it themselves even though they have all the information. Anti-consumer practices all around.
I loved the episode, but this is as good a warning as any against buying "smart toasters". My Kettler is now... oh almost 20 years old and it still works perfectly. I had to replace the brake pads, but that's about it.
A bobby dazzler is a police light i believe also i was always told you should never put all of your code inside of your interrupt handler and should always call a function within ... i never bothered to question it and im not sure if its a best practices thing or another interrupt not allowing returning but a fantastic video, its always good to not let something fall in to e-waste
I don't see the difference between having code inside the ISR and moving it to a function that is called from the ISR. It makes no difference. That said, it will depend a lot on your specific microcontroller. Some may only have a single interrupt and ISR from which you need to determine what caused it, while others can have sophisticated multi-level vectored interrupt controllers where each interrupt is prioritised and calls a specific ISR dedicated to that interrupt. In the case of the former, you may choose, for code readability purposes, to test each interrupt source and then call a function to handle it for example. In my experience the general recommendation is to "get in and get out" as quickly as possible - don't do any major processing in the ISR because this will slow down the rest of the application. Just clear the interrupting condition and maybe something else like set a flag to indicate that X occurred and let the application handle all of the heavy lifting.
General rule is to keep your interrupt routines short, but not by calling other methods from there, but by simply setting some flag, returning from the interrupt, and then do the heavy lifting in your main loop. Using an RTOS makes it usually easier - you just schedule a task to run in your ISR, and the task scheduler will run it accordingly, as long as nothing else with more priority has to run.
The interrupts only handle the button press detection, advancing the time & of course measuring the RPM. Everything else is done outside of the routines.
I've a nordictrack treadmill where the head unit doesn't work anymore, won't update. 'Unfortunately, iFit has stopped working', Great thanks for that. Would love to be able to do what you've done and control it with something more simple and specific to my needs.
That's pretty crappy-- I'll add Nordic track to my list of banned companies as well. But, I gotta say, pretty simple and elegant solution to the problem. Well done, Shahriar!
Do you know what the middle board (btwn power board and Android processor) does with the 12v, besides passing it through to power the Android tablet? On mine, the middle board is receiving 12v, but sending 6.5v to the Android. I powered the tablet with a 12v supply and everything seemed to work. I'm about to rewire the 12v to go straight from the power board to the Android tablet, but wondering if there's a current limiting feature or something else that I'll be missing out on, by bypassing that middle board. Great video, BTW!
Its a nice fix, but im more intrigued "what" and "where" that board was sending data and start adding these domains to the standard block list globally. :P
Terrible how the company did you like that. It's no wonder the consumer those days has so little trust in diagnostic fees. US$1,000 is just straight up a price gouging scam, it's more than half the cost of the entire bike just for that measly little Android SBC, probably costs US$50, it's not even like it's a discontinued model and they're doing you a huge favor dredging up new old stock, it's a current model! Some further context for viewers, NordicTrack (purchased by ICON in 1998) is currently the focus of multiple class action lawsuits for "defective exercise bikes and treadmills" and "deceptive practices" as well as "abruptly cancelling and disbanding the iFIT on-demand fitness classes and refusing to refund customers for their subscription and equipment purchase" as well as a number of privacy and data issues. NordicTrack also appears the be the sort of company that sues its competitors over anything including "leaderboard functionality", "swivel monitor" and "resistance control". By all accounts they sound like a company I would never want to deal with. But good to see you fixed it with a nice clean simple retrofit. But to top it off I would recommend reporting your experience of deception and misleading claims about your warranty, I assume it's the FTC's bureau of consumer protection in the US, you likely won't get any sort of resolution however you add 1 figure to statistics of complaints against the company which helps the class actions but also will annoy the company and likely cost them more than what they got from you in the "diagnostic fee" in labor dealing with the complaint from the FTC.
I'm confused about the whole warranty part. It's still not clear from the video whether the bike was on warranty (and there's a document proving it) and company refused to provide it, or indeed the warranty ran out some time ago and the operator somehow made a mistaking stating that it's still under warranty. Every company's customer service messes up from time to time.
@@gylkag NordicTrack appears to offer a warranty of 10 years on the frame, 2 years on parts and 1 year on labor as standard. Marks on the bike seem to indicate it was manufactured at the end of 2019 in China, Shahriar likely bought it early or mid 2020 in the USA inline with lock down and he probably called tech support mid to late 2022, feasible he was just barely within the 2 year parts warranty, however the NordicTrack warranty terms explicitly state parts must be ordered within the warranty period even if it failed and was looked at by a technician within the warranty period. The support agent likely failed to communicate that his warranty would expire by the time the technician was able to inspect it and parts could be ordered. I can't expect the human that handled his case to be perfect along with every other customer case, but usually if a (good) company makes a claim like, if you pay for X, Y will be free they will honor it or refund the initial charge if they were mistaken, however I'm sure if Shahriar was told the part would be US$50 or even US$100 he probably would have just bought it, but US$1,000 is just insane, you can't blame that on a lapse in judgement, it's plain and simple price gouging, you can buy an entire used S15i for that much money. The tablet is an off the shelf unit with some slight modifications for ICON, the FCC ID says it's made by Zhangzhou Wanlida Technology Co.,Ltd.
@@WizardTim This is exactly the situation. They were wrong in offering the warranty and then chose to not refund me the labor or honor the warranty. So I was left with either throwing the bike away or pay the insane $1000 price tag. So I chose to do just make my own simple interface.
@@Thesignalpath Thanks for clearing this out, was really curious. @WizardTim , you need to open PI firm (or you already work in one?). :) Yeah, I understand mistake, miscommunication and bad handling of the situation - although they shouldn't be on the same case :) - but $1000 is nuts indeed.
How could you tell that your power board was working? My power board has red, green LED lights that flash for a few seconds when you first turn on the power switch, but I don't know what that means...
Those mostly run with a MIPI-DSI interface, 16-24 bit parallel or LVDS in some cases, so you would need a microcontroller that has the hardware for that(or just get creative with what you have) and typically a lot of ram for the framebuffer. A low res 800x600 screen with 16 colors a pixel will need 960kB, that is a lot. Arduinos won’t cut it in this case, an esp32 could work but with limitations and psram and some stm32s are made for this purpose with internal hardware for 2d graphic handling and acceleration and most lcd interfaces. A raspberry in any case should be able to do it, that’s pretty much the „embedded tier of mcus“ Nordic used in the first place.
Salvaging random displays is a pain in the a**. You need a controller board which is often integrated in the main board and even when separate you need a way to talk to it if there are no standard inputs like HDMI (or composite). Sometimes you can find control boards on eBay/Aliexpress if you search the display model but it might not be worth the hassle
So I'm running into an issue with my resistance motor not responding to inputs from my control panel. HOWEVER, if I loosely jiggle the 5 pin connector around in the control board's socket, I can *sometimes* get the motor to move, but only in one direction. What might be causing behavior like this? I'd be fine if I could just use a pot and manually control this but I'm not sure I fully understand how this motor functions.
When you mentioned there was a mistake in the design, I figured it was that you were pulling BOTH of the outside "legs" of the resistance feedback potentiometer up to +5VDC (instead of leaving one grounded), as you had mentioned "putting 5 Volts across the two other terminals". And... My original response was going to be “I am guessing you originally had the right idea in mind but didn't implement it in the original schematic correctly (by grounding one of the outside legs), and fixed it later.” That being said, after looking at the design again, maybe you just misspoke and meant "pulling both the outside terminals up to 5 Volts through 10k ohm resistors". This would be a good idea, as you could read the voltages of RES- and RES+ and calculate the position of the potentiometer (magnets), but you could also tell if the potentiometer circuit failed OPEN (the wiper losing contact) as that would be the only case in which either measurement would be the full 5 volts. This method would also detect the resistance element of the potentiometer opening up, as your position calculation would give you an invalid value. It was an interesting video, so thanks for sharing it.
There is probably a market for electronic... replacements for things like this as you have made here. If I want to watch a video while using the bike I'll put my own phone or tablet on it rather than paying 100s just for that privilege. Reducing e-waste is obviously a big benefit too
Too late now but that tablet might have an eMMC to store its software so it might be possible to dump it and extract the bike app and plop it in some other android device. Might also be possible to disable at the source all the tracking stuff
I'm currently trying to fix one Nordic Track treadmill. The power supply they made for this machine is totally crap! One of the 85C cap was literally wrapped inside a heat sink of a power component which gets heated up to 90C. Also there is some resistors which are continuously at 100C all the time. The PCB is all charcoaled under those resistors. That cap got heated during the years, changed into a resistor and that Android tablet memory was corrupted. I've read some articles in Reddit about installing the firmware but I'm not sure if it is possible any more. The screen shows briefly something about update and after that does nothing.
I do appreciate what you did to get it working again . But , did you open up the computer to see what failed ? Seems a very common failure being capacitors , so a simple fix ? To my way of thinking [ " more than one way to skin a cat " ---- not Pouch ;) ] keep it simple . But I am not hear looking for simple ;) , Oh well - just a thought . Thanks again
Great fix ! This video made me laugh at several points. You have better comedic abilities than you were willing to give your self credit for - in some podcast you were on that i remember listening to a while back. .. 👍 absolutely need to hear about the PiHole debacle. Isn't that a DIY firewall /DNS setup that is supposed to protect against exactly what you experienced ??!
Thanks! Yes, the PiHole indeed blocks all these traffics. This is how I even found out that this unit was attempting all the queries; from the PiHole reports.
@@Thesignalpath Oh - now I get it, thanks. I misunderstood and had thought the PiHole itself was misbehaving, which would be crazy. The Android PC misbehaving sounds par for the course indeed!
We tackled assembling the bike as a family project. ruclips.net/user/postUgkxzg0clhbtRf2gGxPkVETFKJJKGqdsorQu The package is heavy, but I have 2 teen boys that were able to move it. The written instructions were great- we didn't need to watch the videos, but it was good knowing that the option was there if we needed it. After we were able to get it set up, the boys each rode 3 miles and I rode 8 and the bike stayed quiet. The display is easy to reset, and you can put it on whichever setting you are using (time, distance, calories, etc). I will say that my butt is a little sore from the seat, but that could be because I haven't rode in a while. While it is comfortable for me, it was not comfortable with the seat position for my friend (could not move the seat back far enough and he slightly looked like a kid riding a tricycle that he had outgrown). He also said that the seat hurt his manly parts. We are going to look for a different seat that will be compatible with this bike for him.I did purchase the Wahoo Cadence sensor and strapped it to the crank of one of the pedals. This will sync with my Apple Watch, iPhone and will import data in to my Health app. Wahoo does have other sensors available other than cadence. I can also keep either my phone or my iPad on the display and they both feel pretty secure.
More like from the fruit company, plus mixed it with JD philosophy as well. Why else would you have a microcontroller to do a job on a board unless it was to make a proprietary communications protocol that requires the 2 parts to send encrypted traffic to each other. Android board probably just has a failed few bits in the flash, because they deliberately did not turn off any logging in the firmware blob, so it will kill the flash with writing junk log files that later on are erased, and also downloading all the ads and such so they can still serve them offline for a while. Selling the bike and selling the customer again.
Perhaps some day companies such as NordicTrack might finally understand that their total lack of customer service is hurting their bottom line. Unfortunately, that's NOT going to happen until lazy Joe Public gets off their backside to research products before they purchase them...
Are you doing all this in your spare time parallel to some regular job you have or are you retired ? I always wish I had time for things like these but practically impossible when you slave whole day.
I was going to modernize my bike even cheaper and faster by adding ble/ant+ sensor and connecting it PC programs like zwift. But unfortunately it appeared that in zwift you can't set custom wheel diameter :( which means that it is necessary to develop custom sensor.
Because "speed" is totally useless. For Zwift you need only three things - heart rate, cadence and, the most important one, power (pedal based power meter).
@@randybb but it requires to set wheel diameter in the beginning. And if you select wrong one, it will show wrong numbers. Will power meter solve this issue?
@@MSP_TechLab Zwift uses power! If you don't have a powermeter, then you need to have a known trainer on which is power calculated from a speed based on a power curve. Speed on a stationar trainer is completely useless value which cannot be compared with speed on a real bike.
Well Watts is just torque times your revolutions per second times 2 pi. He did some weirdness with using the resistance+1 squared if I see that correctly but I don't really know what that variable actually represents. To get calories you just integrate aka sum up all the watts every second after using a scaling factor.
@@allesklarklaus147 it must be a finger-in-the-air guesstimate of the torque as a stand in for a proper strain gauge. could buy watt pedals or maybe crank arms to get proper numbers.
@@vegard6524 Well you could map the resistance or force applied to that braking setup to a real torque by calibrating it once. Should be reasonably accurate I assume.
Maybe I would use something like ESP32 in the bottom box (for the servo controlling and sensing the rpm) wirelessly connected to some tablet mounted inside the original frame. This would preserve some previous functionality and prevents me from going postal due that cabling issues, but on the other hand this leads to writing own application for android or iOS, which is some real pain in the ass. So at the end of the day I think your solution to that problem is much effective and good enough for Australia, USA, whatever. BTW what the hell "bobby dazzler" is? It triggers me uncontrollable laughing everytime I come across with it, but I don't know what this came from and what this exactly means. It's definitely my Kryptonite similar to "hate sink" (Australian, not Austrian, term for "heat sink"), "Wendeschalter des Motorus" (which I heard in Switzerland, this triggered me laughing for about an hour) or "Zpuchřelá šňůra" (which does almost the same to me).
Pretty lousy how they collected the money for a service call and then sandbagged you on the PC replacement. I get the feeling it wasn't completely an accident... Consumer protection and wasteful profiteering aside, I hope they see this video and get red in the face. Don't mess with engineers!
Considering that 106k people, who are likely technically minded, and likely in a buying position just got a hint about what to do when their one fails, and that replacing all the $1000 crappy display that rails is a $50 set of boards, and some free code, likely going to make a big difference in sales and support sales.
What's wrong with original android tablet, maybe it was repairable? We need right of repair for things like this, otherwise all this ends up in landfill, same as prones, laptops and apple and other anti-consumer vendors stuff. :( Perhaps adding smoked 50% mirrored glass or polycarbonate sheet in front to cover electronics would make it look nice and almost factory. wiki: bobby-dazzler (plural bobby-dazzlers) (informal, chiefly British and Australian) An attractive or excellent thing or person.
@@SidneyCritic might sound crazy but for certain "smart" devices, I usually remove microphones, cameras, antennas. The only nearby offender is my smarphone which I will usually keep in a blackout bag. Not that I'm so interesting that everyone is trying to surveil me, or that I sleep with my tin foil hat on. But why allow yourself to be an easy target?
@@neonkev7866 I was just watching John Robins comedy where his girlfriend was accidently logged into his Google account and everything he did on Google was there, ie, deleting your internet history doesn't delete it. Guess I've got some deleting to do - lol -.
@@neonkev7866 Are you aware that smart home devices usually can only contact the mother ship if you give them Wi-Fi? That being said, many smart functions rely on such an internet connection. But particularly this training bike might work without an active internet connection, and then there is tracking happening.
Don't need the processor that literally defines every function of the equipment. No. Your bike is better and you keep telling yourself that when you are ordering the wife a new one. I'm with you, bro.
Normally I would mercilessly chide anyone who buys pretty much any consumer fitness products, except a) you figured it out, and b) I know that you might be a lot of things but ignorant isn't one of those. If you think the bike is bad, I advise that you don't even look at their treadmills. I'm glad you saw the light 🙂
A more straightforward engineering solution would have been to put a USB device controller in every interface, like the motor that changes the distance of the magnets to the flywheel, or the RPM sensor. Doing that would have moved most control into the Android domain, where you don't need special firmware. Basically just an APK with the necessary UI that talks to the USB devices. That way you avoid routing too many cables, and the controller ICs are basically jellybeans anyway. I also feel that an exercise bike made from metal would be better suited to an external DC wall-wart with 5V or 12V.
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." Antoine de Saint-Exupery Simple & inexpensive _are_ good engineering practices.
A somewhat disappointing video. Considering all the lab equipment you have i really hoped to see reverse engineering of the USB protocol to the android board. If only the android board was dead then you still trashed a lot of stuff that could still be used. Over Engineered or not, the power supply for the bike and such where working. So after reverse engineering you could have hooked up anything. But I do get it, this was simple and effective. But that is not the most interesting in this case.
If there were a "working" bike to try and snoop on the USB interface, then perhaps we could do some reverse engineering of the protocols. But at the end of the day, we would be back to having to make our own interface.
@@Thesignalpath depending on how broken the android part is there might be some traffic moving around still. There is also extracting code from the controllers etc etc. Just because parts are dead not all is lost. Same with you often not having schematics for the devices you repair. Assumption and logic can carry you far.
I just love the fact the you essentially gave NordicTrac a big middle finger :) by modifying & repairing a ridiculously over-engineered exercise bike, with intrusive built-in spyware, even! #RightToRepair and NO to NordicTrac
*Thank you all for your comments! One thing I forgot to mention is that the Android PC is completely non-responsive. It draws very little current and looks like its memory chip is either dead or corrupted. Without access to the programming tools and the software there is very little chance of actually fixing it. This, combines with the huge amount of tracking software it originally had, I decided to just remove it all together.*
Tracking software as in tracking the training or as in tracking the user like for example a cookie or tracking pixel on websites? Ah sorry, 2 minutes later in the video and its sadly the latter one. Never mind.
Another 4(?) minutes later, let me add some value: In your code, line 57, the "resValues" array is missing the commas for 6 values at the end.
I love these side quest videos. Let’s use our knowledge to look at watches and fix broken bikes.
Fantastic episode! Information like this will allow us to make smarter purchasing decisions, but also reiterates the importance of right to repair, service manuals and component availability. I have repaired many devices and appliances with just $2 worth of components whereas the industry would much prefer it be thrown away and a replacement item purchased. Props for protecting your outbound network access - it really should be the default for all border routers.
Fantastic project. It deferred from the usual test equipment in a very effective way. Thanks a lot. The way NordicTrack is working is noted!
Very impressive work. I have an S22i that is a little over 3 years old and it is now dead. I wish I had the skill and knowledge to do a project like this. Thanks for sharing.
I congratulate you on spending the time and effort to avoid throwing away otherwise usable equipment. Excellent. I imagine more and more things will stop working after the Apps are abandoned or the controllers fail.
This is my view too. An "app" failure should not render a complete bike unusable.
I used a software called Blynk to control my espresso machine (ESP32 based PID controller). There used to be a local webservice you could run in Docker and then use an app to build a simple dashboard, for example for setting up the target temperature. Now they want you to use some SaaS subscription and killed the app/
@@12346798Mann Yeah, Blynk is no longer usable for anything hobby related. I gave them up a while ago.
@@Thesignalpath yeah, you're video got me to look for some touchscreens to get rid of all the app based configuration and put a proper interface on the espresso machine. Or maybe I write a web based application. But sadly I'm too busy with thinking around with 868 MHz devices with LoRa or telegram splitting and Matter/Thread. And it still makes espresso.
It truly is a bobby dazzler! Great walkthrough and another itch for the carvera, now!
12:54 - very cool wee nod to Dave Jones!
I'm really glad that you tried to repair this and reduce the carbon footprint. We should all do the same.
Yeah, I've been slacking on getting a pi-hole installed. That's now added to my yacc shaving list. I especially 'like' the bait and switch NordicTrack used to take $150 from you and then present you with a massive bill to replace their android computer. It's great being an engineer. Congrats on the resurrection.
Including parts but not labor in the warranty is such a scummy move, it surprises me this is even legal.
@@lbgstzockt8493 The warranty on the bike is 2 years for parts, and one year for labor and only to the original purchaser. It is clearly stated in the limited warranty terms printed in the owners manual, so it is not illegal, nor even scummy. It's in the contract. If you don't like the terms of the contract, don't buy the product.
Nice project and explanations, high quality video!
I love this solution. Based on your experience with their customer support, NordicTrack is banned from our house as well.
I didn't want to purchase a subscription model bike so I put together my own solution with a Matrix brand bike. It came with an LCD TV mounted to the unit. I replaced it with a ViewSonic brand Andriod PC that's meant for Kiosk applications. That gave me a nice big, (fully open software-wise), touch screen. The Matrix bike sends all the needed data over FiTness Machine Service (FTMS) Bluetooth protocol. I'm able to pick that up with KinoMap software which works really well and has a lifetime buy in option. It's far superior to a pay forever model!
Very nice!
Great project and excellent video, as always!
Bike was saved from scrap yard in perfect engineering DIY way! 👍
This is why right to repair is so important
Great work on the "custom" solution!
Great project, this is Bobby Dazzler indeed! 👍
The original design of the bike is, as you point out, this incredible mismash of extreme complexity and bone-simple solutions. What I find surprising is I was able to implement a flywheel-less exercise bike with a BLDC motor, FOC controller, and encoder that seems like it would be able to do the same job as the NordicTrack but at lower BOM cost, drastically less weight, and substantially lower mechanical complexity. The main downside is that the motor controller is a lot of electronics for an exercise bike - but if you're already putting 3-4 fairly complex submodules into the bike, what's a motor controller that replaces two of them? NordicTrack's design philosophy here seems totally incoherent, both from an engineering and business perspective.
Great video, thank you!
Assume that the people who made the controller boards aren't the ones that make the whole training bike.
There is a bit of an argument against using a generator as a brake, as humans have peak power output of 250W when pedaling, and probably can sustain 100W. That's not a small figure of heat you have to remove from a bunch of MOSFETs, without active cooling or overly large heat sinks. The way they are doing it is to dump that heat into the flywheel.
@@graealex You don't have to dump the power/heat into the switching elements, just use braking resistors or cheap heating elements.
@@Broken_Yugo But then you still have to dump it into a rather small mass and keep that below a certain temperature, plus it can't be an exposed part to avoid the user burning himself. And you might have to cool it for more than an hour sustained. It's at least not trivial.
The flywheel (although heavy), combined with magnets is a dead simple solution. The wheel also automatically cools down since it is spinning. But I like the solution you are proposing. You can do some interesting things with it.
@@graealex Use that to charge some batteries or supercaps. That's how the exercise bikes at Intel work, plug in your tablet or smartphone to charge it. (Sadly, it predates USB-PD.)
@The Signal Path Well done on saving the bike from going to trash BUT just a question? Why didn't you attempt to repair the faulty pc?
Most likely this would be more achievable in a timely fashion than the level of work required to effect that kind of repair. Also be didn't seem to really like the spyware in the computer anyway
I put a pinned comment at the top for this question since a few people asked. But short story is that the memory chip on the unit was likely dead. Without access to software & tools for this custom board, I don't think I had a chance of fixing it.
Can you explain more how did you get the "currentWatts" formula and parameters in line 192?
I'm now inspired to create a custom board to control my kids' power wheels
Very nice - thanks .
This video was a "Bobby Desslar". Awesome
Bobby Dazzler, not Desslar
Sounds like a con company. "Yes its under warranty" "You just have to pay Labour, $150 ", Send an engineer out to tell you what you already know, "Yes the android computer is broke, and Oh! it's not under warranty, give us $1000 if you want the parts for it". Definitely scamming as they know from serial number if warrantied or not. Could have instantly said this before the $150 scam
Yeah, that sounds dodgy. Maybe time for a chargeback?
the only reason why you would pay the 150 would be to get the repair under warranty, so yes, definitely a scam
NordicTrac is a huge exercise machine manufacturer, making far too much money to need to squabble over some warranty claim. Never discount incompetence and plain old poor customer service. I worked as a freelance field service engineer for a few years, they almost certainly contracted a local freelance tech and paid them most of that $150, and the person he spoke to during the last call was probably wholly unaware of the first call, as he purchased the unit used they aren’t likely to be keeping up with his correspondence like they might with a registered customer (further contributing to the lack of competence and/or service).
Selfishly, we should be happy for their piss-poor service, as we get to watch a rather interesting process of hardware integration as a result!
I think it is just sheer poor management on their side. They also want to make the claims as difficult as they can for the customer. For example, once the technician visits, the customer has to call back again, wait for 2 hours on hold, to order the parts! They don't do it themselves even though they have all the information. Anti-consumer practices all around.
No right to repair easily is the cancer of our society. Hope the next generation of consumers WILL NOT accept what is considered as granted today!
I loved the episode, but this is as good a warning as any against buying "smart toasters". My Kettler is now... oh almost 20 years old and it still works perfectly. I had to replace the brake pads, but that's about it.
Irritation is the true mother of invention.
A bobby dazzler is a police light i believe
also i was always told you should never put all of your code inside of your interrupt handler and should always call a function within ... i never bothered to question it and im not sure if its a best practices thing or another interrupt not allowing returning
but a fantastic video, its always good to not let something fall in to e-waste
I don't see the difference between having code inside the ISR and moving it to a function that is called from the ISR. It makes no difference.
That said, it will depend a lot on your specific microcontroller.
Some may only have a single interrupt and ISR from which you need to determine what caused it, while others can have sophisticated multi-level vectored interrupt controllers where each interrupt is prioritised and calls a specific ISR dedicated to that interrupt.
In the case of the former, you may choose, for code readability purposes, to test each interrupt source and then call a function to handle it for example.
In my experience the general recommendation is to "get in and get out" as quickly as possible - don't do any major processing in the ISR because this will slow down the rest of the application. Just clear the interrupting condition and maybe something else like set a flag to indicate that X occurred and let the application handle all of the heavy lifting.
General rule is to keep your interrupt routines short, but not by calling other methods from there, but by simply setting some flag, returning from the interrupt, and then do the heavy lifting in your main loop. Using an RTOS makes it usually easier - you just schedule a task to run in your ISR, and the task scheduler will run it accordingly, as long as nothing else with more priority has to run.
The interrupts only handle the button press detection, advancing the time & of course measuring the RPM. Everything else is done outside of the routines.
Had a friend modify his NordicTrack into a coat rack, yours is better!😁
I've a nordictrack treadmill where the head unit doesn't work anymore, won't update. 'Unfortunately, iFit has stopped working', Great thanks for that. Would love to be able to do what you've done and control it with something more simple and specific to my needs.
That's pretty crappy-- I'll add Nordic track to my list of banned companies as well. But, I gotta say, pretty simple and elegant solution to the problem. Well done, Shahriar!
Do you know what the middle board (btwn power board and Android processor) does with the 12v, besides passing it through to power the Android tablet? On mine, the middle board is receiving 12v, but sending 6.5v to the Android. I powered the tablet with a 12v supply and everything seemed to work. I'm about to rewire the 12v to go straight from the power board to the Android tablet, but wondering if there's a current limiting feature or something else that I'll be missing out on, by bypassing that middle board. Great video, BTW!
Its a nice fix, but im more intrigued "what" and "where" that board was sending data and start adding these domains to the standard block list globally. :P
NordicTrack got NordicSacked! Serves them right. Maybe someone should sell de-spyware kits based on this approach!
Terrible how the company did you like that. It's no wonder the consumer those days has so little trust in diagnostic fees. US$1,000 is just straight up a price gouging scam, it's more than half the cost of the entire bike just for that measly little Android SBC, probably costs US$50, it's not even like it's a discontinued model and they're doing you a huge favor dredging up new old stock, it's a current model!
Some further context for viewers, NordicTrack (purchased by ICON in 1998) is currently the focus of multiple class action lawsuits for "defective exercise bikes and treadmills" and "deceptive practices" as well as "abruptly cancelling and disbanding the iFIT on-demand fitness classes and refusing to refund customers for their subscription and equipment purchase" as well as a number of privacy and data issues. NordicTrack also appears the be the sort of company that sues its competitors over anything including "leaderboard functionality", "swivel monitor" and "resistance control". By all accounts they sound like a company I would never want to deal with.
But good to see you fixed it with a nice clean simple retrofit. But to top it off I would recommend reporting your experience of deception and misleading claims about your warranty, I assume it's the FTC's bureau of consumer protection in the US, you likely won't get any sort of resolution however you add 1 figure to statistics of complaints against the company which helps the class actions but also will annoy the company and likely cost them more than what they got from you in the "diagnostic fee" in labor dealing with the complaint from the FTC.
$15. It's probably off the shelf unit too.
I'm confused about the whole warranty part. It's still not clear from the video whether the bike was on warranty (and there's a document proving it) and company refused to provide it, or indeed the warranty ran out some time ago and the operator somehow made a mistaking stating that it's still under warranty.
Every company's customer service messes up from time to time.
@@gylkag NordicTrack appears to offer a warranty of 10 years on the frame, 2 years on parts and 1 year on labor as standard. Marks on the bike seem to indicate it was manufactured at the end of 2019 in China, Shahriar likely bought it early or mid 2020 in the USA inline with lock down and he probably called tech support mid to late 2022, feasible he was just barely within the 2 year parts warranty, however the NordicTrack warranty terms explicitly state parts must be ordered within the warranty period even if it failed and was looked at by a technician within the warranty period. The support agent likely failed to communicate that his warranty would expire by the time the technician was able to inspect it and parts could be ordered. I can't expect the human that handled his case to be perfect along with every other customer case, but usually if a (good) company makes a claim like, if you pay for X, Y will be free they will honor it or refund the initial charge if they were mistaken, however I'm sure if Shahriar was told the part would be US$50 or even US$100 he probably would have just bought it, but US$1,000 is just insane, you can't blame that on a lapse in judgement, it's plain and simple price gouging, you can buy an entire used S15i for that much money.
The tablet is an off the shelf unit with some slight modifications for ICON, the FCC ID says it's made by Zhangzhou Wanlida Technology Co.,Ltd.
@@WizardTim This is exactly the situation. They were wrong in offering the warranty and then chose to not refund me the labor or honor the warranty. So I was left with either throwing the bike away or pay the insane $1000 price tag. So I chose to do just make my own simple interface.
@@Thesignalpath Thanks for clearing this out, was really curious.
@WizardTim , you need to open PI firm (or you already work in one?). :)
Yeah, I understand mistake, miscommunication and bad handling of the situation - although they shouldn't be on the same case :) - but $1000 is nuts indeed.
How could you tell that your power board was working? My power board has red, green LED lights that flash for a few seconds when you first turn on the power switch, but I don't know what that means...
What would it have taken to salvage the existing lcd screen?
Those mostly run with a MIPI-DSI interface, 16-24 bit parallel or LVDS in some cases, so you would need a microcontroller that has the hardware for that(or just get creative with what you have) and typically a lot of ram for the framebuffer. A low res 800x600 screen with 16 colors a pixel will need 960kB, that is a lot. Arduinos won’t cut it in this case, an esp32 could work but with limitations and psram and some stm32s are made for this purpose with internal hardware for 2d graphic handling and acceleration and most lcd interfaces. A raspberry in any case should be able to do it, that’s pretty much the „embedded tier of mcus“ Nordic used in the first place.
Salvaging random displays is a pain in the a**. You need a controller board which is often integrated in the main board and even when separate you need a way to talk to it if there are no standard inputs like HDMI (or composite).
Sometimes you can find control boards on eBay/Aliexpress if you search the display model but it might not be worth the hassle
As others have said, it would have been an absolute pain to re-use it.
So I'm running into an issue with my resistance motor not responding to inputs from my control panel. HOWEVER, if I loosely jiggle the 5 pin connector around in the control board's socket, I can *sometimes* get the motor to move, but only in one direction. What might be causing behavior like this? I'd be fine if I could just use a pot and manually control this but I'm not sure I fully understand how this motor functions.
Very cool!
When you mentioned there was a mistake in the design, I figured it was that you were pulling BOTH of the outside "legs" of the resistance feedback potentiometer up to +5VDC (instead of leaving one grounded), as you had mentioned "putting 5 Volts across the two other terminals". And...
My original response was going to be “I am guessing you originally had the right idea in mind but didn't implement it in the original schematic correctly (by grounding one of the outside legs), and fixed it later.”
That being said, after looking at the design again, maybe you just misspoke and meant "pulling both the outside terminals up to 5 Volts through 10k ohm resistors". This would be a good idea, as you could read the voltages of RES- and RES+ and calculate the position of the potentiometer (magnets), but you could also tell if the potentiometer circuit failed OPEN (the wiper losing contact) as that would be the only case in which either measurement would be the full 5 volts. This method would also detect the resistance element of the potentiometer opening up, as your position calculation would give you an invalid value.
It was an interesting video, so thanks for sharing it.
There is probably a market for electronic... replacements for things like this as you have made here. If I want to watch a video while using the bike I'll put my own phone or tablet on it rather than paying 100s just for that privilege.
Reducing e-waste is obviously a big benefit too
How can I purchase your set?
Can you share the project files? I’m looking to resurrect mine too
Great 👍
What a ridiculous amount of electronics for an exercise bike ! Mind you, I suppose they needed it so they could spy on you.
Great!
So never, under any circumstances, buy a NordicTrack product of any sort for any reason. Noted. Thanks. 👍
Only buy them as broken, and do this upgrade to them it would seem.
Too late now but that tablet might have an eMMC to store its software so it might be possible to dump it and extract the bike app and plop it in some other android device.
Might also be possible to disable at the source all the tracking stuff
I'm currently trying to fix one Nordic Track treadmill. The power supply they made for this machine is totally crap! One of the 85C cap was literally wrapped inside a heat sink of a power component which gets heated up to 90C. Also there is some resistors which are continuously at 100C all the time. The PCB is all charcoaled under those resistors. That cap got heated during the years, changed into a resistor and that Android tablet memory was corrupted. I've read some articles in Reddit about installing the firmware but I'm not sure if it is possible any more. The screen shows briefly something about update and after that does nothing.
I do appreciate what you did to get it working again .
But , did you open up the computer to see what failed ?
Seems a very common failure being capacitors , so a simple fix ?
To my way of thinking [ " more than one way to skin a cat " ---- not Pouch ;) ] keep it simple .
But I am not hear looking for simple ;) , Oh well - just a thought .
Thanks again
well done
How did you calculate the wattage measurement?
Its some sort of estimate, watts = (resistance squared * rpm) / 200. You can find watt tables from spin bike manufactures online if you want.
You should really put the resistance array into PROGMEM
Good idea.
Great fix ! This video made me laugh at several points. You have better comedic abilities than you were willing to give your self credit for - in some podcast you were on that i remember listening to a while back. .. 👍
absolutely need to hear about the PiHole debacle. Isn't that a DIY firewall /DNS setup that is supposed to protect against exactly what you experienced ??!
Thanks! Yes, the PiHole indeed blocks all these traffics. This is how I even found out that this unit was attempting all the queries; from the PiHole reports.
@@Thesignalpath Oh - now I get it, thanks. I misunderstood and had thought the PiHole itself was misbehaving, which would be crazy. The Android PC misbehaving sounds par for the course indeed!
Did you forced them to return your $150?
They didn’t do it.
We tackled assembling the bike as a family project. ruclips.net/user/postUgkxzg0clhbtRf2gGxPkVETFKJJKGqdsorQu The package is heavy, but I have 2 teen boys that were able to move it. The written instructions were great- we didn't need to watch the videos, but it was good knowing that the option was there if we needed it. After we were able to get it set up, the boys each rode 3 miles and I rode 8 and the bike stayed quiet. The display is easy to reset, and you can put it on whichever setting you are using (time, distance, calories, etc). I will say that my butt is a little sore from the seat, but that could be because I haven't rode in a while. While it is comfortable for me, it was not comfortable with the seat position for my friend (could not move the seat back far enough and he slightly looked like a kid riding a tricycle that he had outgrown). He also said that the seat hurt his manly parts. We are going to look for a different seat that will be compatible with this bike for him.I did purchase the Wahoo Cadence sensor and strapped it to the crank of one of the pedals. This will sync with my Apple Watch, iPhone and will import data in to my Health app. Wahoo does have other sensors available other than cadence. I can also keep either my phone or my iPad on the display and they both feel pretty secure.
Homage to Dave "Bobby Dazzler" Jones
That tablet is iPad price, with the build quality (and probably computing power) of a Prestigio ...
7:30 - middle board silk screen "3 little pigs" ?? !! ??
Good eye. Name of team who designed the board, perhaps? Three boards = 3 little pigs. Don't ask how big pigs look like. 😃
Would be interesting to convert it into a game controller.
Did Nordic Track take some of their service and reparability cues from Rohde & Schwarz?
More like from the fruit company, plus mixed it with JD philosophy as well. Why else would you have a microcontroller to do a job on a board unless it was to make a proprietary communications protocol that requires the 2 parts to send encrypted traffic to each other. Android board probably just has a failed few bits in the flash, because they deliberately did not turn off any logging in the firmware blob, so it will kill the flash with writing junk log files that later on are erased, and also downloading all the ads and such so they can still serve them offline for a while. Selling the bike and selling the customer again.
How much a company asks for a repair seems directly proportional to their general incompetence.
#greed
Perhaps some day companies such as NordicTrack might finally understand that their total lack of customer service is hurting their bottom line.
Unfortunately, that's NOT going to happen until lazy Joe Public gets off their backside to research products before they purchase them...
"Bobby dazzler" is Geordie (UK Newcastle regional accent) slang for well dressed person.
Are you doing all this in your spare time parallel to some regular job you have or are you retired ?
I always wish I had time for things like these but practically impossible when you slave whole day.
This was just thrown together quickly during the weekend here and there.
@@Thesignalpath
Woow.
Nice project. Have you tried chatGPT yet? It is amazing.
It is my list of things to try. I tried registering, but the site does not send me the verification email. :(
I was going to modernize my bike even cheaper and faster by adding ble/ant+ sensor and connecting it PC programs like zwift. But unfortunately it appeared that in zwift you can't set custom wheel diameter :( which means that it is necessary to develop custom sensor.
Because "speed" is totally useless. For Zwift you need only three things - heart rate, cadence and, the most important one, power (pedal based power meter).
@@randybb but it requires to set wheel diameter in the beginning. And if you select wrong one, it will show wrong numbers. Will power meter solve this issue?
@@MSP_TechLab Zwift uses power! If you don't have a powermeter, then you need to have a known trainer on which is power calculated from a speed based on a power curve. Speed on a stationar trainer is completely useless value which cannot be compared with speed on a real bike.
But how did he calculate calories/watts.
Well Watts is just torque times your revolutions per second times 2 pi. He did some weirdness with using the resistance+1 squared if I see that correctly but I don't really know what that variable actually represents.
To get calories you just integrate aka sum up all the watts every second after using a scaling factor.
@@allesklarklaus147 it must be a finger-in-the-air guesstimate of the torque as a stand in for a proper strain gauge. could buy watt pedals or maybe crank arms to get proper numbers.
@@vegard6524 Well you could map the resistance or force applied to that braking setup to a real torque by calibrating it once. Should be reasonably accurate I assume.
@@allesklarklaus147 yes, and that must be the way they did it in the first place, with a look Up table.
Maybe I would use something like ESP32 in the bottom box (for the servo controlling and sensing the rpm) wirelessly connected to some tablet mounted inside the original frame. This would preserve some previous functionality and prevents me from going postal due that cabling issues, but on the other hand this leads to writing own application for android or iOS, which is some real pain in the ass. So at the end of the day I think your solution to that problem is much effective and good enough for Australia, USA, whatever.
BTW what the hell "bobby dazzler" is? It triggers me uncontrollable laughing everytime I come across with it, but I don't know what this came from and what this exactly means. It's definitely my Kryptonite similar to "hate sink" (Australian, not Austrian, term for "heat sink"), "Wendeschalter des Motorus" (which I heard in Switzerland, this triggered me laughing for about an hour) or "Zpuchřelá šňůra" (which does almost the same to me).
Pretty lousy how they collected the money for a service call and then sandbagged you on the PC replacement. I get the feeling it wasn't completely an accident...
Consumer protection and wasteful profiteering aside, I hope they see this video and get red in the face. Don't mess with engineers!
Considering that 106k people, who are likely technically minded, and likely in a buying position just got a hint about what to do when their one fails, and that replacing all the $1000 crappy display that rails is a $50 set of boards, and some free code, likely going to make a big difference in sales and support sales.
What's wrong with original android tablet, maybe it was repairable? We need right of repair for things like this, otherwise all this ends up in landfill, same as prones, laptops and apple and other anti-consumer vendors stuff. :( Perhaps adding smoked 50% mirrored glass or polycarbonate sheet in front to cover electronics would make it look nice and almost factory.
wiki: bobby-dazzler (plural bobby-dazzlers)
(informal, chiefly British and Australian) An attractive or excellent thing or person.
I was also wondering why he didn't repair it, but I guess it was the tracking that he didn't like - lol -.
@@SidneyCritic might sound crazy but for certain "smart" devices, I usually remove microphones, cameras, antennas. The only nearby offender is my smarphone which I will usually keep in a blackout bag.
Not that I'm so interesting that everyone is trying to surveil me, or that I sleep with my tin foil hat on. But why allow yourself to be an easy target?
@@neonkev7866 Unfortunately, by doing so, you make yourself an even more interesting target for them.....
@@neonkev7866 I was just watching John Robins comedy where his girlfriend was accidently logged into his Google account and everything he did on Google was there, ie, deleting your internet history doesn't delete it. Guess I've got some deleting to do - lol -.
@@neonkev7866 Are you aware that smart home devices usually can only contact the mother ship if you give them Wi-Fi?
That being said, many smart functions rely on such an internet connection. But particularly this training bike might work without an active internet connection, and then there is tracking happening.
In such a case, demand your money back since they made you pay for the initial inspection under false pretenses. Do a charge back if needed.
Don't need the processor that literally defines every function of the equipment. No. Your bike is better and you keep telling yourself that when you are ordering the wife a new one. I'm with you, bro.
Did you speed up the video? Otherwise the time is running too fast. 13:56
Nice catch! I found an error in my calculations. I think it was running 20% fast.
Download the product manual and read the limited warranty terms on the back cover. I believe it completely explains what happened here.
Normally I would mercilessly chide anyone who buys pretty much any consumer fitness products, except a) you figured it out, and b) I know that you might be a lot of things but ignorant isn't one of those.
If you think the bike is bad, I advise that you don't even look at their treadmills.
I'm glad you saw the light 🙂
A more straightforward engineering solution would have been to put a USB device controller in every interface, like the motor that changes the distance of the magnets to the flywheel, or the RPM sensor.
Doing that would have moved most control into the Android domain, where you don't need special firmware. Basically just an APK with the necessary UI that talks to the USB devices. That way you avoid routing too many cables, and the controller ICs are basically jellybeans anyway.
I also feel that an exercise bike made from metal would be better suited to an external DC wall-wart with 5V or 12V.
smartest reaction to dumbest company response.
NordicTrack is terrible.
Would have expected more, than just this arduino-module-whatever slapped-together evilness. Expected some proper engineering to be shown.
It works, doesn't it?
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away."
Antoine de Saint-Exupery
Simple & inexpensive _are_ good engineering practices.
If a job’s worth doing, it’s worth doing badly - English engineering expression. In French Perfection is the enemy of good.
@@Richardincancale Perfection is also the enemy of being finished.
A somewhat disappointing video. Considering all the lab equipment you have i really hoped to see reverse engineering of the USB protocol to the android board. If only the android board was dead then you still trashed a lot of stuff that could still be used. Over Engineered or not, the power supply for the bike and such where working. So after reverse engineering you could have hooked up anything.
But I do get it, this was simple and effective. But that is not the most interesting in this case.
You must be fun at parties.
@@vincei4252 you must be terrible at riding a bike.
If there were a "working" bike to try and snoop on the USB interface, then perhaps we could do some reverse engineering of the protocols. But at the end of the day, we would be back to having to make our own interface.
@@Thesignalpath depending on how broken the android part is there might be some traffic moving around still. There is also extracting code from the controllers etc etc. Just because parts are dead not all is lost. Same with you often not having schematics for the devices you repair. Assumption and logic can carry you far.
@@bzuidgeest Make your own youtube channel and repair things the way you like, then come back once you've done that please.
I just love the fact the you essentially gave NordicTrac a big middle finger :) by modifying & repairing a ridiculously over-engineered exercise bike, with intrusive built-in spyware, even!
#RightToRepair and NO to NordicTrac