しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

MacBook Pro(Late 2016)でWi-Fiが繋がらなくなる問題

表題の通り、MacBook Pro(Late 2016)でWi-Fiが時々繋がらなくなるという現象に悩まされていましたが、ようやく原因が掴めたと思うので記録として残しておきます。
モデルはTouch Barのついていない安い方です。

症状

他の機器では問題なくアクセスポイントに接続できているにもかかわらず、MBPだけが接続できなくなる。
アクセスポイントの検出はできているものの、接続しようとすると以下のような、「ワイヤレスルーターのそばに近づいてください」というメッセージが表示される。 f:id:scior:20170730011036p:plain ルーターのすぐそばに近づいても、状況は改善しない。

原因

先に原因を書きますが、USB-Cデバイスによる電波の干渉でした。 https://support.apple.com/ja-jp/HT201163

USB 3 デバイスがコンピュータに接続されていると、Wi-Fi または Bluetoothバイスが正常に動作しないことがあります。なぜですか?
ー 一部の USB 3 デバイスは、無線周波数干渉を引き起こすことがあります。これによって、2.4 GHz 帯を使用する Wi-Fi および Bluetoothバイスとコンピュータとの通信に問題が生じる場合があります。

私の場合は、USBハブが干渉の原因でした。

対策

Appleのサポートページによると、無線のアンテナの位置からデバイスを離すことと、5GHz帯を使用することが推奨されていました。

無線のアンテナは左側のヒンジ近くにあるようなので、ポートが左側にしかないTouch Bar非搭載のモデルでは離すことが難しそうです。
私はたまたま、他の家の電波の干渉を疑って、5GHz帯に切り替えたのですが、今のところこの現象は再発していません。

そもそもUSB-Cデバイスが安物でなければこの現象は発生しないのかもしれませんが、Apple純正のものは結構値が張るのでまだ試せてはいません。(ちなみに使っていたのは日本の有名なサプライメーカーの製品です)

以下、雑記

再現性がないように見えたので、MBPの初期不良や、他のアクセスポイントの干渉を疑いましたが、まさかUSBハブに原因があるとは思いませんでした。
ケーブルなら干渉しなさそうなので、延長ケーブルでデバイスを無理やり離すという手もありますが、USB-Cの延長ケーブルはあんまり種類がないみたいです。

Flickrでフォローされているか確認するツールを作りました

Flickrでフォロワー稼ぎ目的で大量フォローして、すぐにフォローを外す外人ユーザーがせこいと思ったので、被フォロー状態を確認するツールを作りました。

github.com

使い方も書いたのですが、ソースコードも短いのでそちらを見た方がわかりやすいかもしれません。

macOS Sierraとsqlite3 1.3.11でsegmentation fault

Mac初心者なので、El CapitanとかSierraとか言われてもよくわからないのですが、とりあえず今使っているSierraとsqlite3 1.3.11の組み合わせが良くないらしく、引っかかったのでメモ。
Mac OS"ではなくて、"macOS"なんですね。

環境

macOS 10.12 Sierra
ruby 2.3.3p222
sqlite3 1.3.11

症状

sqlite3 1.3.11をbundleでインストールした後、rails tを実行すると、最初の数回は正常に動いたが、その後以下のようなエラーを吐くようになった。

/Users/XXX/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:27: [BUG] Segmentation fault at 0x00000000000110
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:                    
     * ~/Library/Logs/CrashReporter                                         
     * /Library/Logs/CrashReporter                                          
     * ~/Library/Logs/DiagnosticReports                                     
     * /Library/Logs/DiagnosticReports                                      
   for more details.                                                        
Don't forget to include the above Crash Report log file in bug reports.     

...

対策

sqlite3を1.3.12以降のものにする。
私の場合はGemfileで1.3.12を指定してbundle updateする事でうまくいきました。
それでもうまくいかない場合は、下記リンクのようにいったんgemを削除して、brew経由でsqlite3を持ってくる方法もあるみたいです。

関連

Segmentation fault with Rails after upgrading to OS Sierra, possibly related to sqlite3 gem - Stack Overflow

Segmentation fault with sqlite3 and Rails console on macOS Sierra · Petros Amiridis