izivkov/CasioGShockSmartSync

Please add support for b2100 series

torpak opened this issue · 20 comments

I have a GA-B2100C-9AJF that has exactly the same bluetooth capabilities as my GW-B5600-2ER.
It would be so much nicer if i could use them both with your great app and without the crappy one from casio that always tries to sell me something.

If you don't have access to this type of watch, I would be glad to help.

Sure, I would love to add support for the b2100. What happens when you try to connect this watch to this app? Does it not connect?

As you correctly guessed, I do not have access to this watch. Since I am not a watch collector, I cannot justify buying many G shock models. I would need a GA-B2100C for about a month or so to add support for it. Also, would be great to see how the app works with multiple watches simultaneity, and add support if needed. (As an aside, I'm also working on a Python time server for G-Shock, and would like to add support for multiple watches.)

Let me know if you can help me get access to this watch.

The watch is not recognized by the app. Regarding the access to the watch I sent you an e-mail.

I will add support for this watch when I receive the watch. @torpak Thanks for your support.

After getting the watch, I tried to connect to the app, and the watch connected OK. I had to clear the App storage, but this is because the app was trying to connect with the old watch's BT ID. It has nothing to do with the different model.

The following functions did not work:

  1. Could not set the time
  2. The Chime(Signal) was not setting properly.
  3. Some of the Settings. such as Auto-Light do not apply.

I was able to set the time via a Python script I am using for quick prototyping. There are only minor differences compared to the 5600. I will create a separate branch and will use it to add support to the b2100 watch.

I am unsure if should let the user select between 5600 and b2100 manually when connecting (like the Casio app), or I should automatically detect the right watch. The disadvantage of the latter is the app would have to scan each time a new watch wants to connect. If the user selects the watch manually, we can store the BT id for each watch and connect directly using this ID. This is slightly faster, and maybe more energy efficient. But the advantage of scanning is that you can connect any watch without prior configuration, even if you have multiple watches of the same model (like 2 b5600 watches).

torpak commented

OK, I will try auto-detection, but we have to see how reliable it is. It is the equivalent of forgetting your home WiFi network every time you want to connect, and scanning for it again. If this is unreliable, we can start with user selection, but I have some ideas for enhancement later.
I will implement hand-calibration once we have the basic features working.

torpak commented

OK, I was thinking along the same lines.

I have implemented the basic functionality to support the b2100 watch in this branch:

https://github.com/izivkov/CasioGShockSmartSync/tree/b2100-support

This is WIP, but the user can now connect both b5600 and b2100 watches, and perform the usual functions.

TODO:

  • Improve how the watches are connecting. Currently, we do a Bluetooth scan for each time a watch tries to connect. This is not very efficient.
  • For the b2100, add hand re calibration setting

Looks like the b2100 does not have "Automatic Time Setting" option. I will remove it from the settings for that device.

Still working on the hand-adjustment for the b2100. I think I can reset the minute hand to 12:00 position. If I can do this reliably, the next step is to adjust clockwise and counterclockwise to calibrate the hand.

Just as an update, I have resolved most issues with the b2100. One of the difficult problem was running multiple watches reliably, but this is resolved now.

One remaining issue is that the Home Time is not getting set correctly, and I am working on this.

Also, I will leave the hand-calibration for a separate Issue, since it is not strait-forward to set the watch's hands to to correct position. It depends on the current time, and I have not figured out the pattern yet.

@torpak I have the effectively added support for the b2100. Before merging with the main branch, I am wondering if you like to try it and give me some feedback and/or suggestions. If you are comfortable with building from a branch, you can get the code here:

https://github.com/izivkov/CasioGShockSmartSync/tree/b2100-support

We have added support for the B2100. Here are some notes:

  • The watch's model is automatically detected.
  • The user now has an option to "Forget" current watch connection, and connect a new watch without clearing storage form Android Settings.
  • We did not implement "Hand Calibration" setting for the B2100, since it is not clear yet how CASIO does it. We can leave this for a separate issue, but it is quite easy and intuitive to do this directly on the watch.
torpak commented

I have tried the newest f-droid version with my b2100 because I don't know how to build myself. I had to delete the app-data, to get the watch detected. It was correctly recognized as b2100 but setting the time didn't work. Also my GW-B5600-2ER can not be detected as long as the app knows about the b2100.

Hi,

Please make sure you have version v8.4, as shown in the attached video (It is on F-DROID). Press the (i) icon on top-right of screen and scroll to the bottom to see the version. To make sure, uninstall the app and install again from F-DROID. I had a problem with setting the time for B2100 for a short time, and I fixed it right away.

To switch between watches, press the FORGET button. This is the most reliable and energy efficient way to connect to different watches without constantly scanning.

I'm attaching a video of how it works for me. If it does not work in your case, please let me know.

Regards,
Ivo

screen-20230530-135719.1.mp4
torpak commented

It works! This is so great!