famiclone6502 / DIY_Datalink_Adapter

Timex Datalink Notebook Adapter emulator for Raspberry Pi Pico or Arduino, works with the original software to sync your watch.
BSD 3-Clause "New" or "Revised" License
23 stars 1 forks source link

Notebook Adapter not found error! #4

Closed Igor22113377 closed 1 year ago

Igor22113377 commented 1 year ago

I have a problem. I dont know gow to connect it to the vm. Please help! #1

MuddledBox commented 1 year ago

I also want to note that at no point during the process do I have to physically unplug the Pico. The way I do this is very the "Connected" check box. It's all virtual!

So, something bizzare happened. The software detected the adapter and i did the calibration but the watch did not beep. After that i did it one more time, but it says it didnt detect it, but the pico blinked.

You are VERY close. Now you have to get the LED correctly positioned. If you are using the inbuilt LED it like about 1/4 inch above the watch. If you are using an external white LED, it is like 1.5 inches above the watch. Make sure LED is right above the lens. It is very sensitive. If the LED is blinking, you just need to align it now!

Thank you, without you it will be imposible. I did it after i wrote the last message, it detected it, but after the software got big brain moment and got the knowlege that it is not the orginal datalink adapter. I had to just reboot windows 98 and it works. Thanks a lot!

No problem @Igor22113377! Glad you got it working. @famiclone6502 issue is now closed. Feel free to take any of the materials I provided above and add them to your readme.md if desired.

Thank you so much @MuddledBox for your assistance! I have updated the readme.md with your instructions and credited you. I'm not sure I want to close this yet, since I don't fully understand why VMware Workstation needs this workaround. I'm sorry I couldn't explain it better, @Igor22113377 I didn't forget about you, but I've been unfortunately too busy lately and haven't had a chance to set this up again. There is another project that is more active that could be helpful in the future: https://hackaday.com/2023/07/18/modern-software-brings-back-the-timex-datalink/

If the Timex data link "serial device" is plugged in at startup of Windows 98 SE or 2000, it will briefly disconnect, throwing a non-critical error. This occurs in VirtualBox and VMWare Workstation. It has to be manually reconnected. In the case of VirtualBox, there is no way to do that, which is bad. In VMWare Workstation, it can be reconnected - or initially connected with that "Connected" checkbox. If I try to replace the data link device (in reality my Pico) with a null modem emulator like com0com, there is a different result. In fact, it won't disconnect on boot up. There has to be SOMETHING causing this to disconnect, and I believe it to be the USB to serial device disconnects trying to get recognized when booting occurs, as Windows 98 SE or 2000 is looking for devices, the serial device gets confused, and crashes. Worth nothing the Pico / Timex serial device lights up briefly before crashing, leading me to believe Windows is doing something to recognized and communicate the device, as it crashes at the same time on each boot. All I really know is the workaround is to connect the device later as I described above, so we skip this OS boot-up "looking for device" business that causes the serial device crash.

So the problem possibly lies with the Pico itself? Is my code crashing or is the Pico library crashing? It does seem to reset to bootloader mode on me when it reboots, instead of just rebooting to normal mode. Can I prevent bootloader mode somehow? If it crashed and just re-ran my code, it'd probably be fine. Maybe a modified bootloader could help work around this issue.

If it's not my code contributing to the crash when Timex software initializes the serial port, maybe this needs to be reported to the Pico team. Or maybe I need to somehow recognize and accept that input from the serial port in my code. I had serial monitoring software and didn't notice initialization issues in the Arduino version, but it uses a different library.

Ideally I would love to have a Win9x USB serial driver for the Pico so that we don't have to pass through serial communication via virtualization. This would allow older laptops to directly use it instead of sourcing all the parts for the Arduino serial version. I know this was a dumb idea with a predicable outcome, but I made some attempts at forcing what I thought might be similar 9x drivers to install with the Pico's hardware ID, but they would all BSOD. I thought they might be meant for the same serial USB chip.

@Igor22113377 As for making wrist apps, I am not very skilled. I am modifying existing apps that are open source, or making minor hex changes to the behavior of existing apps. The custom chime behavior is my primary use case, as no modern watch seems to have this ability. Those you mentioned would be beyond my skill set. I would encourage you to learn how to code these. If you do make apps, please share them on GitHub with us.

It could be with the Pico. I don't think there is a way to prevent bootloader mode. Windows just does something odd on boot up when detecting this serial device.

I actually searched for a Win9x USB serial driver and even tried to do things like use Zadig, but it did not make the serial device show up properly. I think we'd have better luck with Windows 2000.

Igor22113377 commented 1 year ago

I also want to note that at no point during the process do I have to physically unplug the Pico. The way I do this is very the "Connected" check box. It's all virtual!

So, something bizzare happened. The software detected the adapter and i did the calibration but the watch did not beep. After that i did it one more time, but it says it didnt detect it, but the pico blinked.

You are VERY close. Now you have to get the LED correctly positioned. If you are using the inbuilt LED it like about 1/4 inch above the watch. If you are using an external white LED, it is like 1.5 inches above the watch. Make sure LED is right above the lens. It is very sensitive.

If the LED is blinking, you just need to align it now!

Thank you, without you it will be imposible. I did it after i wrote the last message, it detected it, but after the software got big brain moment and got the knowlege that it is not the orginal datalink adapter. I had to just reboot windows 98 and it works. Thanks a lot!

No problem @Igor22113377! Glad you got it working. @famiclone6502 issue is now closed. Feel free to take any of the materials I provided above and add them to your readme.md if desired.

Thank you so much @MuddledBox for your assistance! I have updated the readme.md with your instructions and credited you.

I'm not sure I want to close this yet, since I don't fully understand why VMware Workstation needs this workaround.

I'm sorry I couldn't explain it better, @Igor22113377 I didn't forget about you, but I've been unfortunately too busy lately and haven't had a chance to set this up again.

There is another project that is more active that could be helpful in the future: https://hackaday.com/2023/07/18/modern-software-brings-back-the-timex-datalink/

If the Timex data link "serial device" is plugged in at startup of Windows 98 SE or 2000, it will briefly disconnect, throwing a non-critical error. This occurs in VirtualBox and VMWare Workstation. It has to be manually reconnected. In the case of VirtualBox, there is no way to do that, which is bad. In VMWare Workstation, it can be reconnected - or initially connected with that "Connected" checkbox.

If I try to replace the data link device (in reality my Pico) with a null modem emulator like com0com, there is a different result. In fact, it won't disconnect on boot up. There has to be SOMETHING causing this to disconnect, and I believe it to be the USB to serial device disconnects trying to get recognized when booting occurs, as Windows 98 SE or 2000 is looking for devices, the serial device gets confused, and crashes.

Worth nothing the Pico / Timex serial device lights up briefly before crashing, leading me to believe Windows is doing something to recognized and communicate the device, as it crashes at the same time on each boot. All I really know is the workaround is to connect the device later as I described above, so we skip this OS boot-up "looking for device" business that causes the serial device crash.

So the problem possibly lies with the Pico itself? Is my code crashing or is the Pico library crashing? It does seem to reset to bootloader mode on me when it reboots, instead of just rebooting to normal mode. Can I prevent bootloader mode somehow? If it crashed and just re-ran my code, it'd probably be fine. Maybe a modified bootloader could help work around this issue.

If it's not my code contributing to the crash when Timex software initializes the serial port, maybe this needs to be reported to the Pico team. Or maybe I need to somehow recognize and accept that input from the serial port in my code. I had serial monitoring software and didn't notice initialization issues in the Arduino version, but it uses a different library.

Ideally I would love to have a Win9x USB serial driver for the Pico so that we don't have to pass through serial communication via virtualization. This would allow older laptops to directly use it instead of sourcing all the parts for the Arduino serial version. I know this was a dumb idea with a predicable outcome, but I made some attempts at forcing what I thought might be similar 9x drivers to install with the Pico's hardware ID, but they would all BSOD. I thought they might be meant for the same serial USB chip.

@Igor22113377 As for making wrist apps, I am not very skilled. I am modifying existing apps that are open source, or making minor hex changes to the behavior of existing apps. The custom chime behavior is my primary use case, as no modern watch seems to have this ability. Those you mentioned would be beyond my skill set. I would encourage you to learn how to code these. If you do make apps, please share them on GitHub with us.

It could be with the Pico. I don't think there is a way to prevent bootloader mode. Windows just does something odd on boot up when detecting this serial device.

I actually searched for a Win9x USB serial driver and even tried to do things like use Zadig, but it did not make the serial device show up properly. I think we'd have better luck with Windows 2000.

You can use windows XP too. You can install the software on Windows XP at latest, i tested it so it works.

famiclone6502 commented 1 year ago

I've found a way to run the Timex Datalink software "directly" on a new Windows OS like Windows 10, and it actually detects the USB serial device. Unfortunately I need to replace the battery in my watch and I cannot fully verify this yet, but I see the LED blinking on my pico!

This is the software I used to run it: https://github.com/otya128/winevdm

I dragged and dropped the SETUP.EXE for the Datalink software into otvdmw.exe and ran through the installer. This step is needed to copy required DLL files to winevdm's own Windows folder. (I had tried this earlier without running setup, and it always complained about missing files). After installing, I dragged and dropped TIMEXDL.EXE (that I had installed to C:\DATALINK) into otvdmw.exe and it worked!

This dramatically simplifies the process! You won't need a virtual machine or legacy hardware.

I will have to fully verify this and update the readme.md, as it is by far the easiest method I've come across.

famiclone6502 commented 1 year ago

@Igor22113377 and @MuddledBox I was able to obtain a CR2025 battery today, and I can confirm that using winevdm with a modern Windows 10 (64-bit) OS works just fine to sync the watch, no need to use a Windows 9x or XP virtual machine. I've updated the readme.md to recommend this.

MuddledBox commented 1 year ago

@Igor22113377 and @MuddledBox I was able to obtain a CR2025 battery today, and I can confirm that using winevdm with a modern Windows 10 (64-bit) OS works just fine to sync the watch, no need to use a Windows 9x or XP virtual machine. I've updated the readme.md to recommend this.

Thank you for the update! That's actually really good news and avoids our serial connection problems as well!

Igor22113377 commented 1 year ago

I've found a way to run the Timex Datalink software "directly" on a new Windows OS like Windows 10, and it actually detects the USB serial device. Unfortunately I need to replace the battery in my watch and I cannot fully verify this yet, but I see the LED blinking on my pico!

This is the software I used to run it: https://github.com/otya128/winevdm

I dragged and dropped the SETUP.EXE for the Datalink software into otvdmw.exe and ran through the installer. This step is needed to copy required DLL files to winevdm's own Windows folder. (I had tried this earlier without running setup, and it always complained about missing files).

After installing, I dragged and dropped TIMEXDL.EXE (that I had installed to C:\DATALINK) into otvdmw.exe and it worked!

This dramatically simplifies the process! You won't need a virtual machine or legacy hardware.

I will have to fully verify this and update the readme.md, as it is by far the easiest method I've come across.

So, i have a problem with this. Its complaining about missing files even that i ran through the setup. I have the error VBRUN300.DLL Not found even that i have all the requiring dlls.

famiclone6502 commented 1 year ago

@Igor22113377 I tried to recreate the issue with a clean machine, and I'm not sure why VBRUN300.DLL didn't copy into the appropriate folder this time. However, it's somewhat easy to recover.

You'll need to use something like 7-zip to open the installation files. If you got it from the internet from Timex, the file is probably TDL21D.EXE. If you open that with 7-zip, inside that is SETUP.EXE. You can use 7-zip to go inside both, but VBRUN300.DLL is inside SETUP.EXE.

Copy VBRUN300.DLL into the folder you installed the Datalink software (i.e. C:\DATALINK) and try again. You can also put VBRUN300.DLL into the folder of OTVDMW.EXE, either one will work.

To summarize, after installing 7-zip:

  1. Right click on TDL21D.EXE and under 7-zip > click Open archive.
  2. Right click on SETUP.EXE and click Open Inside.
  3. Drag and drop VBRUN300.DLL into C:\DATALINK
  4. Try again

If you only have SETUP.EXE (i.e. the floppy version), you can just right click on it, and under 7-zip click Open archive, then drag and drop VBRUN300.DLL into C:\DATALINK and try again.

famiclone6502 commented 1 year ago

I've had others verify this works. I think this is the best solution moving forward. Closing.