LoginSignup
5
3

More than 1 year has passed since last update.

"rvictl"が"FAILED"になったときの解決策

Posted at

はじめに

「rvictl」はiPhone(実機)の通信ログ(パケットのキャプチャ)を取得する際に使用されるコマンドです。
iPhoneをMacにライトニングケーブルに繋いだ後、Macから以下のコマンドを実行することで仮想的なネットワークカードが作成され、WiresharkなどからiPhoneの通信を参照することが可能となります。

$ rvictl -s "iPhoneのUDID"

iPhone(実機)から通信ログ(パケットのキャプチャ)を参照する方法については、他の記事を参照すると良いでしょう。

参考記事
- iPhone(実機)の通信ログ(パケットのキャプチャ)を簡単に取得する方法
- MAC OS CatalinaでiPhoneの通信をキャプチャする方法

"rvictl"が"FAILED"になった

# rvictl -s "iPhoneのUDID"

あるとき、上記のコマンドを実行した場合、以下のように"FAILED"になってしまいました。

Starting device "iPhoneのUDID" [FAILED]

こちらの解決策について書きたいと思います。
ちなみに、私の環境は以下の通りです。

項目 詳細
Mac Apple Silicon Macではない
OS macOS Monterey バージョン 12.1
Xcode Version 13.2.1(13c100)
iPhone iPhone11(iOS 15.2)

一応の確認

今回紹介するのは、あくまで以下のような"FAILED"になったときの解決策となります。

Starting device "iPhoneのUDID" [FAILED]

もし、コマンドを実行しても何も起こらずにプロンプトが返ってくるのであれば、「UDIDが誤っている」可能性が高いかと思います。
その場合は、UDIDが大文字英数であれば小文字英数に変換したり、その逆を行なっていただければうまく行くかもしれません。

解決策

"rvictl"が"FAILED"になるのは、MacのOSがアップデートにより、Appleシステムのセキュリティパフォーマンスが改善されたためとのことです。(詳細は私も良くわかっていません。。)
以下を行うことで解決することができました。

  1. Macをシャットダウンし、macOS 復旧システムで再起動させる。(macOS 復旧システムは、Mac起動時に「command(⌘) + R」を押下することでなることができます)
  2. macOS 復旧システムで起動したら、画面右上のメニューバーから「ターミナル」を起動
  3. ターミナルから、コマンド「csrutil disable」を実行
  4. Macをシャットダウンし、通常モードで再起動
  5. 通常モードで起動したら、「システム環境設定」 > 「セキュリティとプライバシー」へと遷移すると、「一般」タブの下部に「Apple.Incからの設定変更があります」(うろ覚え)のような文言が表示されますので、それを許可します。
  6. これでOKです。再度「rvictl -s "iPhoneのUDID"」を実行しましょう。

おわりに

macOS 復旧システムで実行したコマンド「csrutil disable」は、System Integrity Protection (SIP) を無効にするコマンドのようです。
iPhoneの通信ログを参照し終わったら、再度有効にした方が良いと思います。その場合は、上記の「3.」のコマンドを以下に置き換えれば、SIPを再び有効にすることができます。

# csrutil enable

以上、お役に立てたら幸いです。

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3