Hacking the kyto heart rate monitor 2901

The  kyto heart rate monitor 2901 is a small and cheap heart rate monitor that send data to the computer via an USB port. It is delivered with a convenient PC software that give elementary data (heart beat and heart rate). The sensor is an optical sensor fixed to the ear. This device give a stable measure of the heart rate, is non-invasive, and does not require electrodes and complex installation.

 

The Kyoto HRM 2901

The Kyoto HRM 2901

The very simple Kyto software does not run with Linux and we propose here to try to capture the data sent by the device under Linux.

Serial port

When the device is plugged it is listed as « /dev/hidraw0 » (or « /dev/hidraw1 ») in the « /dev » directory. Let’s imagine that the name of the device is « /dev/hidraw0 ». We have first to allow the user to access the serial port :

sudo chown username /dev/hidraw0

Then incoming serial port data can be read by any terminal (tty) software.

The data

The device send a packet of 5 octets (c1 to c5) for each heart beat. We built a small application to extract the decimal values (short int) corresponding to each octet and computed also the heart rate. The following table gives an example of the data transmitted by the device :

Time (ms) HR (beat/min) Data number c1 c2 c3 c4 c5
289 207 5 65499 3 0 22 3
1073 76 5 65500 3 0 20 3
1849 77 5 65501 3 0 22 3
2633 76 5 65502 3 0 22 3
3417 76 5 65503 3 0 29 3
4225 74 5 65504 3 0 42 3
5025 75 5 65505 3 0 43 3
5833 74 5 65506 3 0 49 3
6633 75 5 65507 3 0 41 3
7433 75 5 65508 3 0 41 3
8217 76 5 65509 3 0 26 3
8985 78 5 65510 3 0 6 3
9729 80 5 65511 3 0 65522 2
10473 80 5 65512 3 0 65520 2
11217 80 5 65513 3 0 65523 2
11961 80 5 65514 3 0 65521 2
12705 80 5 65515 3 0 65520 2
13457 79 5 65516 3 0 65530 2
14225 78 5 65517 3 0 8 3
15001 77 5 65518 3 0 10 3
15776 77 5 65519 3 0 23 3
16561 76 5 65520 3 0 24 3
17345 76 5 65521 3 0 19 3
18120 77 5 65522 3 0 21 3
18904 76 5 65523 3 0 23 3
19688 76 5 65524 3 0 23 3
20472 76 5 65525 3 0 25 3
21248 77 5 65526 3 0 17 3
22032 76 5 65527 3 0 26 3
22816 76 5 65528 3 0 24 3
23600 76 5 65529 3 0 26 3
24384 76 5 65530 3 0 24 3
25176 75 5 65531 3 0 34 3
25960 76 5 65532 3 0 29 3
26752 75 5 65533 3 0 31 3
27536 76 5 65534 3 0 26 3
28328 75 5 65535 3 0 25 3
29104 77 5 0 4 0 20 3
29888 76 5 1 4 0 23 3
30664 77 5 2 4 0 22 3
31440 77 5 3 4 0 12 3
32224 76 5 4 4 0 23 3
33000 77 5 5 4 0 22 3
33784 76 5 6 4 0 26 3
34576 75 5 7 4 0 28 3
35360 76 5 8 4 0 25 3
36136 77 5 9 4 0 20 3
36912 77 5 10 4 0 15 3
37696 76 5 11 4 0 26 3
38488 75 5 12 4 0 32 3
39280 75 5 13 4 0 33 3
40080 75 5 14 4 0 37 3
40864 76 5 15 4 0 29 3
41656 75 5 16 4 0 27 3
42448 75 5 17 4 0 35 3
43248 75 5 18 4 0 39 3
44048 75 5 19 4 0 45 3
44856 74 5 20 4 0 47 3
45656 75 5 21 4 0 40 3
46447 75 5 22 4 0 36 3
47239 75 5 23 4 0 30 3
48007 78 5 24 4 0 7 3

It is clear that the two first octets are related to the count of heart beats. The two last octets are related to the heart rate. The third octet is always 0.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *