Zwiftでのライド中にワットやスピードがゼロになり、画面上のアバターが止まったまま動かなくなる、という症状に見舞われるようになりました。
最終的に私の環境ではこの問題を回避する方法を発見したので、順を追って説明します。
使用機材
まず私が使っている機材は以下。
- スマートトレーナー: Wahoo Kickr ’18(記事)
- ハートレートモニター: CATEYE HR-12(記事)
- ケイデンスセンサー: XOSS(記事)
- コンピューター: Mac Mini (2018), 8GM RAM
- OS: Mojave 10.14.6(記事執筆時点で最新。それ以前のバージョンでもエラー発生)
- アプリ: Zwift (Mac) ver.1.0.38296 (記事執筆時点で最新)とver.1.0.37722(記事執筆時点で1つ前のバージョン)
- スマホ: iPhone 6S Plus / iOS 12.2(記事執筆時点で最新。その1つ前のバージョンでもエラー発生)
- スマホアプリ: Zwift Companion
エラー発生時の接続方法
Wahoo Kickr, CATEYE HR-12, XOSSケイデンスセンサーのすべてをZwiftのMac版アプリにBluetoothで接続していました。スマホのZwift CompanionでBluetoothを束ねて送信するということはしていません。Zwift Companion自体は利用。
エラー発生状況
- Zwiftの起動時はすべてのセンサーと問題なくペアリングできて、走り出せる。しかし、しばらくすると画面のワット表示が「0」になりスピードも「0」に。走行不能になりライドを継続できない
- その状態でZwiftアプリの「デバイスとの接続」画面をチェックすると、Wahoo Kickrとの接続はパワー・スピードともに維持されているが(”Connected”の表示)、”No Signal”(信号なし)と表示される
- この”No Signal”現象は、ライド後30〜50分のあいだで頻繁に起こる。早い時は15分で起こる。まれに90分起こらない時があるが、基本的にライド毎に発生する
- この”No Signal”現象は、待っていてもなおらない
- この時でもハートレートモニターとケイデンスセンサーは問題なく接続できていて、データを送り続けている
- 一度このエラーが起こると、ライドを終了し、ZwiftのMacアプリを再起動するしかない
- アプリを再起動すると問題なくライドを再開できるが、やがてまた”No Signal”現象が発生する
- このエラーが起きた時にKickrの電源を切ってまた入れ直してもアプリではデバイスの検出がもうできない。アプリを再起動する必要がある
問題の切り分けのためにやったこと
このエラーは何が原因で起きているのか。大きくブレイクダウンすると、次の4つのうちのどれか、あるいは複数に問題があると考えました。
- Wahoo Kickr(スマートトレーナー)の問題
- Bluetoothの電波干渉
- Mac Miniの問題
- Zwiftアプリの問題
Wahoo Kickrの正常動作を確認する
ハートレートモニターとケイデンスセンサーは問題なかったので、まずKickrの故障を疑い、他の全てのBluetoothアプリを終了後、スマホのWahooアプリを起動。ファームウェアが最新バージョンかどうか、スピンダウン(キャリブレーション)できるかどうか、アプリ内でワットやスピードが出るかどうかを確認しました。
このアプリが厄介で、フェームウェアのバージョンを誤認識したりうまくスピンダウンできない時もありましたが、最終的にアプリとの接続・スピンダウン・アプリ内で出力・速度表示できることを確認。ここで一旦、Kickr自体には問題がないと判断しました。
Bluetoothの電波干渉がないかどうか調べる
Zwiftアプリとスマートトレーナーとの通信トラブルで最も多い原因としてBluetoothやANT+への電波干渉が挙げられています。
ただ私の場合はKickrからのデータが受信できていなくてもハートレートモニターとケイデンスセンサーとの通信はできていて、Kickrとのコネクション自体も維持されているように見えたので、たぶんこれは関係ないと思っていました。
が、問題をひとつひとつ潰すために次のことを試してみました。
- iPhoneのBluetooth機能をOFFにする
- iPhoneの電源自体をOFFにする
- 近くにあったFire HD8をOFFにする
- 近くにあったAmazon EchoをOFFにする
結果、どれを試しても”No Signal”問題が解決することはありませんでした。
よくある「家庭内Wi-Fiの周波数帯を2.4GHz帯以外に変更する」というのはやりませんでした。これによって似たような問題が解決する方も確かにいるようですが、うちはたぶん関係ないだろうと判断。
ちなみにZwift公式サイトでの電波干渉トラブルシューティングは次のページで網羅されています。
参考 BLE vs ANT+ Interference Troubleshooting Tips
Mac Miniに問題がないかどうかを調べる
Mac MiniがうまくBluetooth信号を受信できなくなるのではないか。そう考え、以下を実行しました。
- Zwiftアプリを起動する前にOSを再起動する
- Mojaveのアップデートがあったのでそれを当てて最新版にした
しかし結果は変わらず。Mac Mini側の原因としてはこれ以上調べようがありません。PRAMのクリアやBluetooth関連ファイルの削除も考えましたが、CATEYEのハートレートモニターとXOSSのケイデンスセンサーとの接続・データ受信に問題がないことを考えるとMac Mini/Mojave自体の問題ではない可能性が高い。
一応Zwift公式サイトには次のような解決法も提示されています(結果的に私には関係なかった)。
参考 Resolving Mac BLE Pairing Issues After an Update
Zwiftアプリ側の問題を疑ってみる
最後にZwiftアプリ側に何らかの問題があるのではないかと疑い、いろいろなテストをしてみることにしました。これは”Kurt Kinetic”という、日本ではあまり有名ではないトレーナーでも(アプリ等の環境は異なるものの)私が経験した”No Signal”と非常に近い問題が報告されていて、結果的にZwiftアプリ側のバグらしかったので、ひょっとして我が家もこのパターンか、と思ったのでした。
参考 FIXED: Kurt Kinetic Trainer receiving ‘No Signal’ when pairing with Android Zwift Companion
Zwiftアプリ側では次の項目を試してみました。
- ZwiftアプリでKickrをスピンダウンする
- Watt表示を「3秒平均」から「即時」に切り替えてみる
- Zwiftアプリが8月2日に最新版の1.0.38296に更新されたので、アップデートした
しかしいずれも効果なし。Zwiftの起動時、デバイスの接続直後に「歯車アイコン」から設定画面に入りスピンダウンした時、初回だけエラーなしで2時間近いライドをこなせました。しかしその後はやはり”No Signal”が発生したので関係なさそうです。
症状として気になるのは、「Zwiftの起動時、乗りはじめはまったく問題ないのに、ライドが40, 50, 60分…と一定の長さになるとスマートトレーナーからのデータを受信しなくなる」ということです。
Bluetoothの電波干渉が原因ではないとしたら、Zwiftが一定時間を経過するとデータ受信をやめてしまうのか。それともKickrが一定時間を経過するとデータ送信をやめてしまうのか。どちらかのような気がしましたが、Wahooアプリで見るとKickr自体は健康そうです。
また、Wahoo Kickr自体には初期ロットで様々な問題はあったものの(ハードウェアの異音や、初回からペアリングできないなど)、私のように「ライドの途中でワットやスピードを受信しなくなる」という事例はネットをいくら探しても見当たりません。
そして私が現在使用中のMac Miniは今年の6月に購入したばかりの比較的新しいもので、OSのMojaveは登場時、Zwiftがうまく動かないトラブルが多発していたことを知りました。
すると問題は「最近のMac Mini + Zwiftアプリ」にある「新しいタイプのエラー」ではないか、と考えました。
問題解決への糸口
問題解決への糸口になったのは、Zwift Companionアプリです。Zwiftで”No Signal”エラーが出た時、次のことを試してみました。この時、Zwiftアプリは起動しっぱなしです。
- 「メニュー」から歯車アイコンで「デバイスの接続」画面へ移動
- 「内蔵ブルートゥースを使う」から「Zwiftコンパニオンアプリを使う」を選択
- Zwiftコンパニオンアプリの「設定」→「デバイスの接続」がONになっていることを確認
- Zwiftコンパニオンアプリを再起動
- 待つ
するとZwiftの接続画面から”No Signal”が消えました! そしてライドを継続できるようになりました。
これは、トラブルシューティングの上で私には画期的な出来事でした。Macを再起動しなくても、Kickrを再起動しなくても、そしてZwiftアプリを終了させずともパワーとスピードの送信が再び可能になったからです。
最終的な解決法
次に試してみたのは、最初から「Mac MiniのZwiftアプリですべてのセンサー類からの信号を受け取るのではなく、スマホアプリのZwift Companionに信号を集約し、それをMac Miniに送る」という接続方法です。
Windows環境でBluetooth接続をされている方はこの方法が一般的らしいのですが、MacではBluetoothで直接通信できるのでそれは試していなかったのでした。最初はZwift Companionなしではじめていたせいもあります。
しかし最初からZwift Companionと全てのデバイスを接続し、それとMacを通信させるようにしたら…
“No Signal”エラーは発生しなくなりました。
この記事を書くまでのあいだ5回ライドしましたが、1度も発生していません。最近までずっと1時間に1度は必ず”No Signal”が発生していたことを考えると、これは最終的に問題解決したのではないかという手応えを感じています。
原因はよくわかりませんが、個人的な推測としてはZwiftアプリが特定のMac, Mojave OSで動いている時にBluetoothセッションを張ったままパワーとスピードのデータ収集をやめてしまうバグがあるんじゃないかという気がしています。
そしてZwift Companion経由でエラーが起きないのなら、Bluetoothの電波干渉が原因ではないだろうし、Kickrの問題でもないだろうし、Mac Miniの問題でもなさそうだ。ZwifitとMac Miniの相性かもしれないけど、何かが変わる必要があるとしたら、それはZwiftアプリの他にはない。
というわけで、このエラーは「Zwiftアプリのバグである」という仮説を持っていますが、今後仮に「Zwift Companion経由」でも”No Signal”エラーを経験したら、その時はまた記事にしたいと思います。似たようなエラーで困っている方の参考になれば幸いです。