Amazfish
Huami设备(如Amazfit Bip、Cor、MiBand2/3和GTS)以及Pinetime Infinitime的配套应用程序。
由于Sailfish基础镜像的变化,需要Sailfish 3.0.3.8或更高版本。可以在documentation/
目录中找到编译说明,包括其他操作系统的编译说明。
安装
- 安装"chum"仓库(下载RPM文件并运行
devel-su pkcon install-local RPM文件名
) - 运行
devel-su pkcon refresh
- 运行
devel-su pkcon install harbour-amazfish
支持的设备
支持的设备分为3个等级:
金牌
这些是我拥有、测试过的设备,我会尽量不破坏任何包含的功能:
- Amazfit Bip
- Amazfit GTS
- Amazfit GTR2
- Pinetime InfiniTime
- Bangle.js
银牌
这些是在应用程序中正确实现的设备,但我没有,由社区测试,包括:
- Amazfit BipS
- Amazfit Bip Lite
- Amazfit GTS2
我不保证不会破坏这些设备的功能,但会尽可能修复。
铜牌
这些设备使用的协议与其他支持的设备相近,因此被视为那种设备。这些设备的使用体验可能会有所不同。
- MiBand 2/3/4
- Amazfit Cor
GTR2 / GTS2用户注意事项
这些手表未能遵循蓝牙规范,该规范规定"Appearance"特征应该在不需要验证/加密的情况下可读。事实上,这个特征似乎根本无法读取,尽管它是可用的,这导致Bluez出现故障。Android/iOS在这方面似乎不那么严格。
已经为Bluez添加了一个补丁,如果之前已经读取并缓存了特征,它就不会再次读取,这允许我们解决这个问题。
设备缓存位于/var/lib/bluetooth/[主机MAC地址]/[手表MAC地址]/info。
以root身份,在[General]标题下添加以下行:
Appearance=0x0192
然后使用以下命令重启蓝牙:
systemctl restart bluetooth
在Amazfish中配对手表后执行此操作。
由KEXI提供支持
从0.5.1版本开始,活动数据被检索到SQLite数据库中。因为我认为让个人控制自己的数据并能够自行分析数据很重要,所以我选择将数据存储在KEXI兼容的数据库中。这将允许你从手机复制数据库,并在Linux/Windows/Mac上的KEXI中打开它,执行查询和报告。这个额外的功能意味着我链接了几个KDE库,它们应该会自动安装。
固件下载 - 请先阅读 - 我不对你的手表变砖负责 ;)
阅读这里了解要刷入哪些文件:https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Bip
文件下载已在Amazfit Bip和GTS上测试过。
这些设备的固件分为多个文件。使用官方MiFit应用程序时,所有文件都会按正确顺序自动下载。使用这个应用程序时,你必须单独发送每个文件。固件文件可以通过解压Zepp apk获得,在assets/文件夹中查找名为Mili_chaohu.*的文件(适用于Bip)。GTS固件文件可以在网上找到,设备名称是kestrelw,但请确保你下载的文件是合法的。当你选择一个文件时,将确定其类型和版本,并且会阻止你发送无效文件。
固件(.fw)需要匹配的字体(.ft)和资源(.res)文件。首先发送固件,应用程序会在传输结束时发送重启命令,手表将启动到需要发送匹配字体和资源的模式。只需等待应用程序再次连接,然后发送字体和资源文件。
存在以下类型的文件:
固件、资源、a-gps数据、字体
因此,再次强调,固件刷入顺序是:
.fw
.ft
.res
服务器端配对码
较新的设备(GTS、BipS等)需要服务器端配对密钥,这需要首先与Android设备配对。要获取密钥,请按照这里的说明操作,并在提示时输入到Amazfish中,不要在开头加0x。
参见 https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-GTS
配对问题
对我来说配对是可以的,有时需要尝试两次。如果完全无法配对,请尝试:
保持应用程序打开,并在sailfish的蓝牙设置页面再次配对
在sailfish蓝牙设置页面删除所有条目并重试
关闭/打开手机蓝牙
恢复手表出厂设置
检查在所有这些操作之后,是否可以从sailfish蓝牙设置页面配对。应该可以从那里正常配对和连接。如果那里不行,我的应用程序也不行。
目前并非所有功能都已实现。
可能不适用于所有设备
使用蓝牙低功耗与手表通信,已知在某些设备上存在问题。已知在小米Mido上可以正常工作。可能也适用于FP2,并在XA2上进行了测试。
已实现 配对 通知 通话 部分设置 检索活动 心率图表 闹钟 表盘下载 固件上传 活动同步 基本音乐控制
待办 更多设置 支持其他设备(可能如MiBand2,因为它类似)
提示: 在你的设备上,在/home/nemo创建一个指向/home/nemo/.local/share/harbour-amazfish的符号链接。 这样,你就可以使用MTP轻松地从手机复制数据库。
按钮动作
Bip和GTS在按下手表按钮时会发出通知。Amazfish捕获这些通知,允许在按下时执行动作。可以在按下2、3或4次时执行动作。 要配置这些动作,请转到设置 > 应用程序 > 按钮动作。
可以使用自定义脚本,脚本必须命名为harbour-amazfish-script.sh并位于主文件夹中。 以下是一个将OTP代码作为消息发送到手表的示例:
#!/bin/sh
if [ "$1" == "4" ]; then
CODE=`python3 -c 'import pyotp;totp = pyotp.TOTP("XXXX 认证器代码在这里 XXXX");print(totp.now())'`
dbus-send --session --print-reply --dest=uk.co.piggz.amazfish /application uk.co.piggz.amazfish.sendAlert string:'' string:'Google OTP' string:$CODE boolean:true
fi;
来源:https://github.com/piggz/harbour-amazfish
感谢:
Gadgetbridge开发者,他们给了我很多提示和启发,特别是他们的设备代码。
https://codeberg.org/Freeyourgadget/Gadgetbridge