As much as some people on the Internet might like to think — no, Apple did not come up with the idea of the smart watch. Even if you ignore the calculator watches that we imagine a full 60% of Hackaday readers wore at one time or another in their lives, the Timex Datalink was already syncing with computers and pulling down the user’s list of appointments back in 1994 by decoding the pulses of light produced by a CRT monitor. Hey, it sounded like a good idea at the time.
Unfortunately, this idea hasn’t aged well. The technique doesn’t work on more modern displays, and naturally the companion software to generate the flashing patterns was written for Windows 3.1. But thanks to the reverse engineering efforts of [Synthead], you can now sync any version of the Timex Datalink to your computer using nothing more complex than the onboard LED of the Teensy LC or Raspberry Pi Pico.
There’s actually several different projects working together to make this happen. In place of a CRT, there was an official “Timex Datalink Notebook Adapter” back in the day that was designed to be used on laptops and featured a single blinking LED. That’s what [Synthead] has recreated with timex-datalink-arduino, allowing a microcontroller to stand in for this gadget and featuring 100% backwards compatibility with the original Datalink software.
![](https://hackaday.com/wp-content/uploads/2023/07/datalinklib_detail.png?w=400)
But since you’re probably not rocking Windows 3.1 anymore, having access to that software is far from a given. That’s why [Synthead] also created timex_datalink_client, which is a Ruby library that lets you generate data fit for upload into the Timex Datalink. At the time of this writing there doesn’t seem to be a friendly user interface (graphical or otherwise) for this software, but it’s easy enough to feed data into it using plain-text configuration files.
Helpfully [Synthead] provides screenshots of information loaded into the original software, followed by a config file example that accomplishes the same thing. It looks like writing some glue code that pulls your schedule from whatever service you fancy and formats it for the Datalink client should be relatively simple.
We’ve previously seen projects that got the Timex Datalink synced without the need for a CRT, but they still required the original software. To our knowledge, this is the first complete implementation of the Datalink protocol that doesn’t rely on any original hardware or software. Expect eBay prices to go up accordingly.
My wife bought me a Datalink around the year 2000.
Each time I changed the battery the rubber o-ring that sealed the back stretched a little.
The watch died one sweaty summer day.
the o-ring is a consumable, should have been changed for each battery/case opening
I wish I had known that.
I’m not saying Synthead is Superman, but what I will say is I’ve never seen the two of them in the same room.
I am Superman, because I still have my old Casio PRT-1 that I can use to navigate when flying in the air. :-D
Olaf
Too much hair ….
No, it’s nice. :D
That was a cool product back in the day. I recall the CRT interface, I didn’t realize there was a LED counterpart though that would make sense.
Reminds me of the Fossil Wrist PDA, but the Datalink came out nearly 10 years earlier.
Actually, a lot of other devices used the flashing light, too. I had a chain databank “thing” with a photodiode. The software was written for Windows 9x already, sadly.
Back in ~2000, I wished the software ran on Windows 3.1x, too.
Still wonder why the application wasn’t Win32s compatible, at least. It didn’t require threading or other any sophisticated mechanisms. Even back then I found this to be some kind of planned obsolescence.
I owned one. Wonder where it went.
I don’t how how fast can the keyboard lights flash, but could this be achieved blinking them?
That’s an interesting idea
I think that these ancient Towitoko chip card readers did something like that. They interfaced with the PC/AT keyboard interface, afaik.
I can no longer find an old article regarding programming something using the keyboard numlock/scroll lock/caps lock LEDS. If the baud rate is low enough, it could be possible.
Check out the timing for the Arduino adapter here:
https://github.com/synthead/timex-datalink-arduino/blob/5d5ea610fff4bcc1d010d916332d575f4b78b3d8/led_blaster.cpp#L3-L7
The LED flashes very, very quickly. For most watches, a zero bit is indicated by 15 microseconds followed by 450 microseconds. For the Beepwear Pro, it has even tighter timing at 6 us on, 408 us off. This is 6/1,000,000ths, or six millionths of a second!
While pretty much any LED on a keyboard is capable of these rates, the software that runs these keyboards aren’t designed to toggle the LEDs at these speeds. However, if if the keyboard was modified to receive data packets and emit the correct light pulses like a Notebook Adapter, then it would work, yeah!
omg I had multiple Timex Data Link watches! I even had the little led adapter ( probably still do if i search ). Loved that watch.
I’m with you, Ken. I had both “flavors” of Data Link watches — the one that you held up to the monitor for programming, and the later one that used a USB port with an interface that clipped on to the watch. I, too, loved them both.
The first reverse engineering of the timex datalink was done in the 90’s… I did it, using a phototransistor stuck to the microphone input of a sparcstation, and posted it on alt.hackers. The first complete implementation of the protocol was also done in the 90’s. My link to it is broken, but I’ve been using it ever since. We even reverse engineered how to write “wrist apps”. Someone wrote a memory dumper, assigned everyone address ranges, and we read the ROM off the watch by reading the LCD and typing hex. I program mine regularly using an LED on a serial port… sending at 2048 bits/sec by sending 0xFF and 0x00 at 115200 bits/sec. A bit ends up being between 5 and 6 bytes long with the start and stop bits too short for the watch to detect. Alternate 5’s and 6’s and its close enough. (Or something like that, I wrote the code in 1997 or something.)
http://www.bobdbob.com/~tjohnson/timex/
“But thanks to the reverse engineering efforts of [Synthead], you can now sync any version of the Timex Datalink to your computer using nothing more complex than the onboard LED of the Teensy LC or Raspberry Pi Pico.”
Cool, can we keep using the Windows 3.1 software, too, if we want to?
Speaking of.. LGR had made a cool video which shows the good ol’ Windows 3.1x software.
https://www.youtube.com/watch?v=GCHHzw4s5W4
Sure can! It acts identically to the original adapter, and has been tested to work with:
– Timex Data Link® Software 2.1d
– Timex Ironman Triathlon® Data Link® 2.01
– Timex BeepwearPRO 1.03
– DSI Electronics e-BRAIN v1.1.6
– timex_datalink_client Ruby library
More information here: https://github.com/synthead/timex-datalink-arduino
The trickiest part is USB, however. There are no working USB serial drivers for the Teensy LC for Windows 3.x or 9x. If you’re using Windows 2000 or XP, the adapter works great with the original software!
Additionally, if you use serial pass-through with a VM, the VM host will handle the USB hardware, and will present itself as a typical RS232C port to the VM guest as if it’s an onboard serial port. This will let it work 100% with a Windows 3.1 VM, for example.
Lastly, if you want real RS232C (a la DB-9 serial), there isn’t any reason why you couldn’t toss a MAX232 on the Arduino board to handle the +/- 12V of RS232C, then use the Tx/Rx UART of the Arduino, if you’d like! Here’s a good article on how to do this: https://diyodemag.com/education/the_classroom_rs232_the_max232_ic_arduino_uno
I had one of these and loved it. I used to blow my money on collecting watches.. I had a datalink, the pager watch which would accept alphanumeric pages, one with a TV remote on it, and one with a gameboy level black and white camera! What a time.
I have all four of those in my ‘digital oddballs’ watch collection. I also have watches that measure wind speed, display decimal time, translate to Morse code, etc. would like to get a Casio Frequency that is a basic drum machine and a Cosmophase as well.
I keep acquiring digital oddballs and I keep finding more to collect.
I wonder how good (or bad) was battery life on this watch
Around 2-3 years on a CR2025 button cell battery!
I had the original and an Ironman version.
As someone says above, lots of people played with it, dumped the roms, created wristapps.
Someone created a CRT sync for Linux. It didn’t work in X11, it was the raw console. I was using Red Hat 5 or 6 (not RHEL, it was the bookstore CDs before RHEL) or maybe Mandrake.
I had something that took data from the tcl/tk ical application and converted to the uploader.
I still have the watch & the serial LED somewhere.
Hey I saw that! I think you’re talking about the datalink_ironman project by David Fries!
https://github.com/dfries/datalink_ironman/blob/710da196610ca016a3b19d11763bba126b3a0dda/datalink/svgablink.c
Prior to doing my own reverse-engineering from scratch, I found this repo and attempted to use it. I had trouble building it, and saw that it required root, which was something I wanted to avoid doing :)
The early versions of timex_datalink_crt actually used a text console with limited success. Interactive text consoles present themselves as virtual serial consoles, and they really aren’t built for vertical sync. This requires lower-level access to the video devices, which is why root is necessary with the code in the timex_datalink repo, even though Windows will happily hand over raw hardware access to the old 16-bit Windows executable without any concern ;)
I wanted to approach my CRT syncing library with a modern, fresh approach that didn’t require a text console or root access. I eventually found myself very easily being able to draw vertical-synced graphics in SDL2, and after some tuning of the graphics, got the “lines” to be meaningful to the watch.
My timex_datalink_client lib worked great for this! Integrating its data into the timex_datalink_crt library was a snap, and worked right away. I also experimented more and found that a stronger “signal” could be established to the watch by using thicker graphic lines on the CRT. All of my Datalink devices didn’t seem to mind that multiple scan lines were being drawn. I added some title and progress text to the graphics too, just to make it more polished.
If you’d like to try timex_datalink_crt, here’s the library! There is some example code right in the README.md so you can hit the ground running. Of course, ensure that you’re using a CRT (and I think you need to set your refresh rate to 60 Hz outside of the lib for now).
https://github.com/synthead/timex_datalink_crt
Those github files look familiar. Before 2000. I recognize all the emails/web sites buried in there. I was using it between 1996 and 2000.