Login required to started new threads

Login required to post replies

Treadmill iFit "hack" / tweak
Quote | Reply
Hey! Just thought I'd share the result of my latest home-gym improvement project :)

Background
As a canadian, passing most of my winter training in my 'home gym', I like things to be convenient and efficient. Like puttin my fans for the trainer on wireless operated switches so I can turn them on/off without lieaving the bike, etc.

I like my treadmill - a NordickTrack 1750 w iFIT - but there’s a few annoyances; One is the control buttons: they have ZERO tactile feedback and they register half the time if I am lucky. Quite annoying. Also not sensitive, need to push hard, wait a second between pushes so I can’t “rapid fire”. This is a design thing, my panel was replaced under warranty a while back for other issues, same behavior.

Couple of years ago, I initially thought “no problem, I am just going to rewire my own switches in parallel”. Turns out cables are printed ribbon cables, can’t splice them (best I know). And soldering right on the control board was a “no go either”; Chip is miniature, I don’t’ have this level of soldering skills;

Not to mention, the treadmill is still under warranty, so I want to keep everything stock.

Also, I never understood why all treadmills do not come with at least a few user-configurable presets (speed at least). I know some treadmills have that, but it seems very rare and not on my tready.

Few weeks ago, I ran into a link here on ST (yay for ST!) pointing to page/tool to connect to the IP of any iFIT enabled treadmill, and control it through simple commands.
Sure enough, trying this guy’s code I could send commands to my treadmill – this opened possibilities!

PART 1 – Treadmill Control App
-----------------------------------------------
Wife works in IT, I enlisted one of her master programmer colleagues to create a custom app to my specifications/needs. I was working on my own thing in parallel but his turned out a lot more elegant than mine – both in aspect and efficiency. This is in the form of a html web page that you load in your browser, simply type in the IP of your treadmill on your WIFI, and you get full control of speed/incline of the treadmill from the web page.

I have my bike trainer computer in the other corner of the room, so I just use that to connect.

I also had him create 6 user presets: with one button click you can go to specific speed and/or incline conditions.
This is very useful when doing intervals, alternating between 2 or 3 speeds repeatedly with a single click; I guess 3 of them would have been enough, but at that point programming 3, 4 , 5 or 6 is about the same effort so why not 6.


The presets can easily be pre-edited in a config file. Maybe in the future we make it editable in the page directly.

More-over, a LEARN function was created so any presets can be re-assigned while running to the current condition.
So we can change the presets “on the fly” by pressing "LEARN" then the preset button we want to re-assign.

Finally, a critical feature, the web script is “listening” to keyboard key strokes, linked to each function, for 'remote control' without a mouse.
After all, I am running on the treadmill when using it, so a mouse is 'no go'.

Here's how the interface looks like. While it uses iFIT related features, it does NOT require an active membership (way too expensive).


I guess this is the most interesting part of this post; I had a few friends with other NordicTrack models try the tool, and it worked for them. I assume it would work also with iFIT enabled ProForm machines.

This really opens up possibilities. Like pre-programmed workouts, maybe course simulation, etc without the need for the expensive iFIT membership.

Part 2 Control Panel

----------------------------------------

Initially, I used a cheap wireless numeric keypad ($18) to test everything and use the App while running. No point in spending more time/money if the thing is not working or not stable. It showed that the control app worked well! But hitting the small keys precisely while running was not the ideal situation.


Then I moved to create a better suited panel. First, I took apart the wireless numeric keypad, re-engineered the connection matrix, then optimized my future key-mapping to use the smallest number of pins possible from the chip. Turns out I could handle the 11 switches I was planning to use (22 contacts) with only 7 pins on the mini-board.



Above, the "business end" of the thing is quite small (the chip). I followed all the electrical lines to re-engineer the pin combination of each key (matrix config). Felt like doing one of those Ratchet and Clank game puzzles. Below, results of the connection re-engineering of the numkey pad.



A little optimization work: finding out which pins were used the most, so I can perform all my functions using a minimal number of connections (wires). Turns out I could handle the 11 buttons (22 contacts) using only 7 pins on the chip (it had 15 pins). So I came up with new key mapping accordingly



Soldering the connections I will actually need...



A little sawing action to keep only the "business end" of the wireless numeric keypad



For the switched, I decided to use “arcade push buttons” (Sanwa) for many reasons: big easy targets to hit while running, very responsive, and I liked the look and choice of colors.

Using my "skills" at MS Word, I made my design/concept of a new control panel using these arcade switches.



Then from a piece of sheet metal found in the trash bin at work, made a new panel.

Final panel after fabrication. Carbon Fiber look (film) applied for good measure :) Each button presses just emulate a key press on a numeric keypad.

Everything is now installed, and working flawlessly!



Here's the final result:








And a video showing the buttons in actions...
https://vimeo.com/314293061

Conclusions
----------------------------------------

This was a fun project, with a bit of everything: programming, re-engineering, electronic, fabrication, etc.
No modifications or hacks (physical or software) were actually done to the treadmill itself, which is the beauty of the thing.
So nothing to affect the warranty. Maybe I just turned off the “auto-update” feature of the iFIT system to make sure they don’t disable this connection type in a software update.

Commands are now hyper-responsive and user presets will be very useful to me.

In the end, this might sound a bit overkill, but I had fun working on this and it will allow me to better enjoy my home treadmill runs.

If there are interest with people that have iFIT-compatible treadmill and would like the ability to program and force pre-programmed workouts, maybe we can convince my friend programmer to work on it :) The interest might be limited though as one would need a compatible treadmill and most likely an android device (I don't think my friend does IOS apps). I can see how it would also be great to do course simulation without iFIT subscription.


---------------------------------
T. Guertin / Spocket
Last edited by: spocket: Jan 30, 19 10:00
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
very cool and interesting. well done.

could have used your expertise a week ago. just sold my X9i.. problem was the incline motor placement. located in the rear to achieve the high inclines, it would not hold while running. by the end of an average run the incline would be set to 10% just to keep the deck level. after replacing 4 (literally) incline motors, I sold it.
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Very cool. Any chance the developer who made the app could make it available for others? I'm about to pull the trigger on a 1750 and would like presets as well. I'm fairly technical, so I could get things up and running once I have the app. I'd prefer to not start from scratch though.

Also, I like your control panel but I can't see any of the pictures you posted. Video looks nice.

And finally... any reason I _shouldn't_ pull the trigger on the 1750? This will be my first home treadmill.
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Ha - that's awesome, I feel like I should be playing Street Fighter II Turbo Edition on the treadmill while running intervals with those colored buttons!!
Quote Reply
Re: Treadmill iFit "hack" / tweak [lightheir] [ In reply to ]
Quote | Reply
I have a proform treadmill (which is basically the same company) and it has physical buttons for speed/incline. they are really inexpensive (slightly over 1000 usd) and I had no issues with it for years.

As for the iFit, more interesting than control would be to connect to the iFit to read the speed/incline and broadcast it over ant+/BT to the garmin watch (you could probably mimic a footpod for speed, not sure how you would do the incline). I'm not aware of any other way to capture "climbing" on treadmill and its killing the OCD part of me that NPG on TP is always the same as average speed regardless of the incline.

Can you post the link to the thread you were referring to? couldn't find it. thanks
Last edited by: dgutstadt: Jan 30, 19 12:28
Quote Reply
Re: Treadmill iFit "hack" / tweak [m_reese] [ In reply to ]
Quote | Reply
Would an Android App with simple buttons to reach configurable presets be useful? Would you pay for that? If so he might make one.

Ownership of the current tool is a bit cloudy, I paid him to develop it for me.

Also, not quite useful without the hardware acting as "remote". Thus the idea of using an android phone or something to do it as a single component.

As for the 1750, it's a good treadmill. I do have some gripes about it, but I do believe I would need to spend 5 times this amount of money to get something better.
As for small annoyances...
- In my version, as stated, buttons are not very responsive... but newer version might be a lot better. Mine's 5 yrs old
- Squeaky (but I do run with headphones so it does not bother me too too much...)
- Not sure if it still does, but it used to say "commercial" on the side.. it is by no means a 'commercial' grade machine. Pivot points are simple bolts, sometimes with plastic spacers, etc.
- While it can go to -3% grade, as oyu go in negative grades it reduces max speed. At -3, max speed is 8.0 mph.. at -2% it is 8.5 and at -1% it is 9.0 mph if I recall right. Kind of annoying: defeats the purpose. I was hoping the remote control might allow to bypass that but it does not.

That being said, one thing i LOVE about it is how soft is the deck. It absorbs shocks like crazy. Barely sore after a long run on it. I don't know if it is still the case, but Lionel Sanders used to have both this tready and a ProForm then a Woodway, but he ran a LOT still on his 1750 for that reason.

You can see the deck motion in this video below:
https://vimeo.com/150285457

Just make sure you get the longest extended warranty with "in-house repairs" you can buy. You can't easily bring it back to the store for repair :)

Several triathletes in the area over here with this machine or the model above, everybody seems pretty happy with it.

---------------------------------
T. Guertin / Spocket
Quote Reply
Re: Treadmill iFit "hack" / tweak [dgutstadt] [ In reply to ]
Quote | Reply
 
When the connection channel is open, the treadmill does broadcast a bunch of information like the current incline, distance traveled, etc. So if you capture and process that information you could do what you're talking about. Here's a few snippets from the connection log as it runs:

Server Client { "values":{ "Actual Incline":"2.5" } }
Server Client { "values":{ "Total Time":"188:02:55", "Total Miles":"1441" } }
Server Client { "values":{ "Total Time":"188:02:56", "Total Miles":"1441" } }
Server Client { "values":{ "Actual Incline":"3.0" } }
Server Client { "values":{ "Total Time":"188:02:57", "Total Miles":"1441" } }
Server Client { "values":{ "Current MPH":"8.6", "Current KPH":"13.8", "Miles":"0.044", "Kilometers":"0.070" } }
Server Client { "values":{ "Total Time":"188:02:58", "Total Miles":"1441" } }
Server Client { "values":{ "Current MPH":"9.0", "Current KPH":"14.4", "Miles":"0.047", "Kilometers":"0.075" } }
Server Client { "values":{ "Total Time":"188:02:59", "Total Miles":"1441" } }
Server Client { "values":{ "Current MPH":"9.1", "Current KPH":"14.6", "Miles":"0.049", "Kilometers":"0.078" } }
Server Client { "values":{ "Total Time":"188:03:00", "Total Miles":"1441" } }
Server Client { "values":{ "Total Time":"188:03:01", "Total Miles":"1441" } }
Server Client { "values":{ "Miles":"0.054", "Kilometers":"0.086" } }
Server Client { "values":{ "Total Time":"188:03:02", "Total Miles":"1441" } }
Server Client { "values":{ "Miles":"0.057", "Kilometers":"0.091" } }


---------------------------------
T. Guertin / Spocket
Last edited by: spocket: Feb 4, 19 3:43
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Why is the word “Zwift” found no where on the page?

I know there at least used to be a Zwift API but I think it’s be deprecated. If you could get the incline from Zwift you could feed that to the program so that Zwift can control the incline of the treadmill in real-time.

If you did that, you could simplify your buttons even more with a big “+” and a big “-“ that increment the speed by .1m/kph. That way you can slow down when the road goes up and vice versa.

Great job, I love it.


--Chris
Quote Reply
Re: Treadmill iFit "hack" / tweak [chriselam] [ In reply to ]
Quote | Reply
You're right, this could easily be integrated in ZWIFT.

Actually, if somebody give them the link I posted, they can probably integrate it directly in the zwift app/program so the treadmill adjusts grade to the course.

---------------------------------
T. Guertin / Spocket
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Very nice! At work so I didn't have time to read all details, but this looks super interesting.

Topo Athletic Canada Ambassador - MYCODE10GUILL
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
You made it on DCRainmakers links for the week.
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Wish i can do the same with my F85. Sole's units are pretty tough but their user interface is quite dated.

Very nice work here.
Last edited by: Neo.e92: Feb 3, 19 17:15
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
this is great, thank you for working on it. i've been tempted to try ifit but it is pricey and probably not worth it in the end. i dont care about the google map video so much as the preprogrammed route and incline. sounds like you can get exactly that with what you've created. can you also build a complete workout and bypass the buttons? ie recreate a known race course and speed? Like i could try and replicate a goal 5k, i could pre-program splits (mile/half mile /quarter or whatever) with correct incline and speed, and then have the treadmill run the program, and all i have to do is hang on for dear life? and the zwift compatibility would be sweet too!
Quote Reply
Re: Treadmill iFit "hack" / tweak [jflan] [ In reply to ]
Quote | Reply
Thanks :) Correct, buttons are not needed, just a way to control the current version of the app;

Indeed, with a program made for this and using this communication method, you could program and force time-based workouts either using incline and or forced speeds with the possibility to override as needed. If the program reads the information coming off the treadmill this could also be a distance-based workout.
Or load a road course and let the treadmill adjust incline based on distance traveled, like iFIT offers but without membership.

Just a matter of creating such program. I have an idea who I might reach out too to make this happen: looks like PerfPro Studio already has some treadmill support, knows how to deal with programmed workouts and has its own workout builder module and also knows how to deal with course simulation, grade, etc from the bike trainer support modes. Looks like this could be added there with minimal efforts...

---------------------------------
T. Guertin / Spocket
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
Well, I reached out to Drew, the programmer of PerfPro Studio, and offered my knowledge/help to enable him to add iFIT treadmill control to his program. I have yet to hear back from him.

He's already got treadmill workout support in his program, already deals with pre-programmed workouts, has a workout editor, and familiar with course simulation (trainer) and already offers all kind of course file import options. Seems like he could add this with very little efforts, thus my offer to him.

Maybe if a couple of other people (with NordicTrack/ProForm iFIT treadmills) email him showing interest for the feature, maybe even better if you are not a current PerfPro Studio user (so he would get a few additional sales out of it) maybe that can motivate him :)

p.s. We confirmed compatibiity with Nordictrack's incline trainers as well (x11); Thanks Josh!

---------------------------------
T. Guertin / Spocket
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
We need the Zwift API back, although I’m not sure if it used to include incline or not. If they had an API to grab the current incline it would take 5 minutes to include it and make the treadmill Zwift controlled.


--Chris
Quote Reply
Re: Treadmill iFit "hack" / tweak [chriselam] [ In reply to ]
Quote | Reply
That would be awesome. I have a Nordic-track treadmill and would be cool to use it that way.
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
I would be willing to pay for any tool that allowed my treadmill, Nordictrack 2450, to integrate with zwift. I'm willing to pay for treadtracker but not available right now, NPE Gem Retro but not compatible with Norditrack, and footpods which I have. An app based solution seems ideal.
Quote Reply
Re: Treadmill iFit "hack" / tweak [jckstrthmghty] [ In reply to ]
Quote | Reply
jckstrthmghty wrote:
I would be willing to pay for any tool that allowed my treadmill, Nordictrack 2450, to integrate with zwift. I'm willing to pay for treadtracker but not available right now, NPE Gem Retro but not compatible with Norditrack, and footpods which I have. An app based solution seems ideal.

others can correct what i write here if i'm wrong, but i think i'm right.

there is 1-way communication between zwift and your treadmill. your treadmill talks, zwift listens. whatever you do, your treadmill isn't going to react to a command from zwift. yet.

there's an ethernet port in the back of many treadmills. it's called the CSAFE port. the treadmill is ready for the hack. wahoo made a thing a few years ago called the GymConnect, and it's for this purpose. it's since sold GymConnect to another company but the thing is still made.

i have a woodway and there are 3 ways i can zwift: footpod, GymConnect and the treadmill's own bluetooth signal it sends. they all do the same thing. one is not better than the other, unless the footpod is either slightly more or slightly less accurate (yes, apparently treadmills are not always accurate). the CSAFE part, with the GymConnect installed, and the bluetooth signal the mill emits, do precisely the same thing. neither accepts a signal from zwift and executes based on that signal.

zwift isn't going to tell your treadmill to speed up or slow down. i don't think it'll make that command. what i could see zwift doing is telling your treadmill to incline, or to decline to flat ground. what zwift would need to do, i think, is come up with an algorithm that scales the speed of the mill up or down as the mill inclines, that is, if you're running along at 7min pace and zwift tells the mill to go from flat ground to a 4 percent incline, the mill would automatically back the pace down to, say, 7:30, or 8:00, whatever the appropriate deceleration. then the user would manually change the speed to suit.

this is if zwift gets to the point where it sends a command signal out. which i think it will, eventually. but it doesn't yet. so, it'd take a pretty serious hack to tweeze out code that allowed that to happen absent zwift's help, and zwift will not help you to do that. zwift will send commands to your treadmill when it's ready, and in that case the CSAFE port will actually have a use. as of now, with zwift, its only value is to send a BLE signal, but your computer is already likely to send that signal.

Dan Empfield
aka Slowman
Quote Reply
Re: Treadmill iFit "hack" / tweak [Slowman] [ In reply to ]
Quote | Reply
Dan

Gymconnect / Gem Retro is a good solution where compatible but Nordictrack uses a proprietary serial maintenance port. It's not csafe.

There is already a solution on github to control your ifit based treadmills and there is already IOS and android apps that can send data to zwift using ble. It would seem possible those two could be married. Unfortunately the zwift api is now closed.

Quite annoying considering all the hardware is in place and most likely software as well but locked away to keep loyalties towards ifit. Understandable but annoying.
Last edited by: jckstrthmghty: Mar 25, 19 10:29
Quote Reply
Re: Treadmill iFit "hack" / tweak [Slowman] [ In reply to ]
Quote | Reply
Ideally, Zwift would send the include to the treadmill, which would adjust accordingly. Based on that, I can will either maintain, increase or decrease my speed. That information should be sent from the treadmill to Zwift, which will then adjust the speed of my avatar.


--Chris
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
spocket wrote:
Hey! Just thought I'd share the result of my latest home-gym improvement project :)

Background
.

PM sent
Quote Reply
Re: Treadmill iFit "hack" / tweak [zedzded] [ In reply to ]
Quote | Reply
Great project. I just started with a basic Garmin footpod on our treadmill with Zwift, but have done a few other minor "hacks" on some of our other home gym equipment.

I added cheap ANT+ sensors to our older Spin Bike and Nordic Track Ski machine, mainly to log on my Garmin but the Spin Bike works with Zwift. Both the bike and the Nordic Track Ski Machine took some tweaking to get the wheel diameter right in my Garmin, and I still haven't got it to pickup the cadence from a counter-dilled magnet I mounted in the ski.

I also added a cheap cadence sensor to my Kayak paddle (Vaaka style for $15) and am now logging water activities. Just make sure not to submerge the paddle :).
Last edited by: eea123: Apr 16, 19 4:29
Quote Reply
Re: Treadmill iFit "hack" / tweak [spocket] [ In reply to ]
Quote | Reply
spocket wrote:

Few weeks ago, I ran into a link here on ST (yay for ST!) pointing to page/tool to connect to the IP of any iFIT enabled treadmill, and control it through simple commands.
Sure enough, trying this guy’s code I could send commands to my treadmill – this opened possibilities!


What link was that? I have an iFit Treadmill that I am looking to 'enhance'
Last edited by: HogieWan: May 13, 19 7:45
Quote Reply