Medaka

From AsteroidOS

Medaka (Casio Pro Trek Smart WSD-F21HR) is a humongous watch with a secondary, sunlight readable display. The port is currently in progress

Medaka.png

This is not the Casio WSD-F20. That is a different watch, see Koi/Ayu.

Description

Medaka is the successor to the WSD-F20 which adds a heartrate sensor. Externally, medaka shares the main body and display with ayu, but has more aggressively designed panels and a more flexible strap, as well as a plastic back with a large heartrate sensor protrusion. It is possible to swap body panels and straps between ayu and medaka, but ayu straps will need to be slightly trimmed to fit with the thicker backplate of medaka. Medaka also has a redesigned second display, which now has segments for showing heartrate zone.

Medaka shares most of its internals with kingyo, and runs a modified kingyo kernel. At a low level, nearly everything is shared apart from the colour display panel (which is instead shared with koi/ayu), the secondary display and heartrate sensor (which are both unique). However, from a user's point of view, the two watches are nothing alike.

Port status

In theory, the port is quite mature. The watch boots fine and can be used daily.

The issue is that this watch needs a 64 bit kernel and a 32 bit userspace. The watch can't be run entirely in 64 bit mode because the android hardware binaries are 32 bit. This sort of multiarch system is not easily supported by openembedded/bitbake. Currently the watch has to be built as two separate machines, with the second one building only the boot image. This also requires several hacks on top of the current build system to get working, and it's not likely to be merged in this state.

Second Display

Medaka-segment.jpg

The second display has 6 7-segment digits in the center, 6 7-segment digits at the bottom, a 23x5 pixel matrix at the top, two separator lines above and below the central large digits, a heartrate zone indicator curving around the left and a smattering of icons and text indicators everywhere else.

Getting USB

USB is not exposed on the outside of these watches. Accessing USB requires some disassembly of the watch, but does not compromise water resistance. The process is as follows:

  • Optionally remove the straps. This isn't necessary, but gives you more space to work.
    To remove the straps
    • Find the metal strap retention brackets at the base of the straps. Find the springbar pin which engages with the bracket.
    • On one side of the bracket, use something thin to push in the springbar and pull that side of the bracket away.
    • Use a pair of tweezers to remove the spring bar
    • Hinge the strap outwards until you can remove it completely.
  • Remove the four hex screws from the front of the watch. Be gentle, as these screws thread into plastic.
  • Pop the outer bezel off. It helps to use a plastic pick wedged in the corner next to the strap.
    • Beware, as the inner bezel will also release, and the charging indicator light pipe may fall out. The light pipe is tiny and transparent, don't lose it!
    • It is possible to pop the bezel off only at the top, but this is more fiddly and more difficult.
  • Remove the 'Casio' logo plate by just pulling it off the watch.

USB is presented as two gold-plated pads. Do not attempt to solder to these pads, you will melt the casing of your watch. You should build some sort of dock to interface with these pads. It is recommended to use pogo pins for this.

You now have three options:

  • Reassemble the watch completely.
    This means USB will require disassembly to access. If not done carefully, this may wear out the holes that the front hex screws go into.
  • Reassemble omitting the Casio logo plate.
    This will leave a hole in the front of your watch through which you can access the USB pads - this won't compromise water resistance, but may look ugly.
  • Modify the Casio logo plate.
    This will allow you to access USB by only removing the top strap of your watch. This avoids the issue of the other two methods, but does involve some knife skills. TODO
    Add pictures

TODO: add pictures. Please bug dodoradio for pictures if you're reading this.

Repair

The watches can be easily disassembled by removing 6 phillips screws on the back. The watch is sealed with a gasket, so water resistance is not compromised by disassembly. Replacement parts are available, but expensive.

Over time, it's common for these watches to develop horizontal cracks around the heartrate sensor. While this isn't a structural issue (the back panel is a layer of plastic over a metal internal frame) it may compromise water resistance. This seems to naturally happen because of some internal stresses in the plastic.

Miscellaneous hardware docs

Keys

The central key is the power button. The top and bottom keys are volume up and down respectively.

Manually getting to fastboot

Hold the top key while powering on the watch. Navigate the menu using the top key and select using the power button.

Sensors

Medaka has a blood oxygen sensor which isn't obviously labelled. This may need special effort to get working. It's likely the one labelled Ppg, though the two hrm sensors are also suspicious.

root@medaka:/home/ceres# test_sensors 
Hardware module ID: sensors
Hardware module Name: MultiSensor Module
Hardware module Author: Casio
Hardware module API version: 0x1
Hardware HAL API version: 0x3
Poll device version: 0x1030001
API VERSION 0.1 (legacy): 0x1
API VERSION 0.1: 0x65537
API VERSION 1.0: 0x16777217
API VERSION 1.1: 0x16842753
API VERSION 1.2: 0x16908289
API VERSION 1.3: 0x16973825
API VERSION 1.4: 0x17039361
Got 15 sensors
=== Sensor 0 ==
Name: Accelerometer
Vendor: Casio
Version: 0x1
Handle: 0x1
Type: 1
maxRange: 156.906402
resolution: 0.4788
power: 0.200000 mA
minDelay: 10000

=== Sensor 1 ==
Name: Magnetic field
Vendor: Casio
Version: 0x1
Handle: 0x2
Type: 2
maxRange: 4912.800292
resolution: 0.150000
power: 1.0 mA
minDelay: 20000

=== Sensor 2 ==
Name: Gyroscope
Vendor: Casio
Version: 0x1
Handle: 0x3
Type: 4
maxRange: 34.906585
resolution: 0.286233
power: 1.0 mA
minDelay: 10000

=== Sensor 3 ==
Name: Pressure
Vendor: Casio
Version: 0x1
Handle: 0x4
Type: 6
maxRange: 1110.0
resolution: 0.13122
power: 1.0 mA
minDelay: 40000

=== Sensor 4 ==
Name: Hrm1
Vendor: Casio
Version: 0x1
Handle: 0x5
Type: 65540
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0

=== Sensor 5 ==
Name: Hrm2
Vendor: Casio
Version: 0x1
Handle: 0x6
Type: 65541
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0

=== Sensor 6 ==
Name: Ppg
Vendor: Casio
Version: 0x1
Handle: 0x7
Type: 65572
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 20000

=== Sensor 7 ==
Name: Behavior
Vendor: Casio
Version: 0x1
Handle: 0x8
Type: 65537
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0

=== Sensor 8 ==
Name: Step Counter
Vendor: Casio
Version: 0x1
Handle: 0x9
Type: 19
maxRange: 2000000000.0
resolution: 1.0
power: 0.19999 mA
minDelay: 0

=== Sensor 9 ==
Name: Step Detector
Vendor: Casio
Version: 0x1
Handle: 0xa
Type: 18
maxRange: 1.0
resolution: 1.0
power: 0.19999 mA
minDelay: 0

=== Sensor 10 ==
Name: Wrist Tilt Gesture
Vendor: Casio
Version: 0x1
Handle: 0xb
Type: 26
maxRange: 1.0
resolution: 1.0
power: 0.19999 mA
minDelay: 0

=== Sensor 11 ==
Name: Significant Motion
Vendor: Casio
Version: 0x1
Handle: 0xc
Type: 17
maxRange: 1.0
resolution: 1.0
power: 0.19999 mA
minDelay: -1

=== Sensor 12 ==
Name: Heart Rate
Vendor: Casio
Version: 0x1
Handle: 0xd
Type: 21
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0

=== Sensor 13 ==
Name: Heart Rate Wake
Vendor: Casio
Version: 0x1
Handle: 0xe
Type: 21
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0

=== Sensor 14 ==
Name: Simple Bha
Vendor: Casio
Version: 0x1
Handle: 0xf
Type: 65542
maxRange: 65535.0
resolution: 1.0
power: 3.0 mA
minDelay: 0