VRChatで時間経過後に人の声が聞こえなくなる問題に悩まされ、2年越しに解決した話し

15秒で読める概要と解決法

VRChatでワールドJOINしてから一定時間経過後に他の人の声が聞こえなくなってしまう問題の解決方法。IPv4 を IPv6 より優先にする設定をしたら直った。管理者権限でコマンドラインを開き、

netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0
netsh interface ipv6 set prefixpolicy ::1/128 40 1
netsh interface ipv6 set prefixpolicy ::/0 30 2
netsh interface ipv6 set prefixpolicy 2002::/16 20 3
netsh interface ipv6 set prefixpolicy ::/96 10 4
netsh interface ipv6 show prefixpolicies

と打ってENTER。出てきた結果が以下のようになっていることを確認したら完了。念の為PC再起動してVRCへ。

Querying active state…
Precedence Label Prefix
———- —– ——————————–
50 0 ::ffff:0:0/96
40 1 ::1/128
30 2 ::/0
20 3 2002::/16
10 4 ::/96

同じ問題に遭遇した方は連絡をください

私の各種SNSリンクはこちら https://lit.link/warenosyo
問題に遭遇したことがある、あるいは友達が、知り合いがこの問題に遭遇したらしいという話しをしっていたら、「あ、それ俺もあったよ」ぐらいの1行メッセージで全然構わないのでぜひご連絡をください。情報をあつめています。

悩まされていた問題の詳細

VRChatで音が聞こえなくなる問題に約2年間悩まされてきた。具体的には、インスタンスに入った直後は何の問題もなく自分の声が相手に届き、相手の声も自分に聞こえる状態。そこから10分とか、15分、ときには20分程度は問題が起きないのだが、一定の時間を過ぎると特定のユーザーの声だけ聞こえなくなる。自分とA,B,Cさんがインスタンスにいるとすると、Aさんの声だけが聞こえなくなるわけだ。そのままさらに時間経過すると、次はBさん、そして最後はCさんの声も聞こえなくなってしまう。自分の声は相手に届いている。ちなみに、Re-join(ワールドを開いてもう1回JOINボタンを押す)すると直る。が、また15分とか20分とかすると現象が再発する…といった感じ。再現性は100%で、人数が多いインスタンスだろうが少なかろうが、相手がどこの誰だろうがどこのワールドだろうが必ず一定時間で発生する。インスタンスに自分と誰かもう1名しかいなくても、30分ぐらいぐだーっとしゃべっていると、その相手の声が聞こえなくなるのだ。

この問題が正直なところVRChat熱を下げていたこともあった。というのも、例えば謎解き系ワールドなんて行けたもんじゃない。Re-Joinすると最初からやりなおしだったりするわけで。ゲームワールドも全然だめだ。また、物理距離が長い(広い)ワールドも楽しめない。みんなで探索しようーなんてやっても自分だけ何度も何度も入口からやり直しだし、場合によってははぐれてしまったりもする。私が戻るまで先へ進まないようにしておくね、なんて気遣いをさせてしまうこともしばしば。そんなこんだで飲みインスタンスや雑談インスタンスぐらいしか遊べなかったわけなのだ。

PC/回線などの環境について

回線:NURO光 戸建てタイプ 23時台でも上り下りとも500-600Mは出る
PC:RTX3090, Ryzen7 5800X3D, ASRock B550M Pro4, RAM32G まぁAM4ではあるがVRCやるのにスペック不足、というレベルではまったくない
ルーター: WX6000HPをWi-Fi6のAPとして前段に置き、後段はNURO貸与のF660A。WX6000はブリッジモードとし、F660AのNAT, DHCPを利用。
オーディオデバイス: マザボ内蔵Realtekを中心に外付けUSBオーディオデバイス、Bluetoothオーディオデバイスなど5個以上を使い分け。mutalk 2もあるし。
有線LANアダプタ: マザボ内蔵Realtek
VRデバイス: まぁQuest2, Quest3, Pico4, MeganeXなど色々使うも、問題がデスクトップモードでも発生するのでVRはカンケーないと結論づけ。

あらゆることを試しまくった

VRChatのカスタマーサポートチームとはログや動画を幾度となく送り合いつつ、何十通とやりとりさせてもらったのだが解決の糸口がつかめず。サポート担当者さんありがとう!

そして、知る限り何十というVRChatコミュニティ、100名を超えるVRChatユーザーの皆さんに現象の相談をして、誰かそんな現象に遭遇している人を聞いたことがない? といっても似た現象にあったひと、解決できた人を見つけることはできなかった。

Steam再インストール、SteamVR再インストール、VRChatの再インストール、オーディオドライバの更新、オーディオデバイスの変更、デスクトップなので有線LANチップのドライバ更新、有線LANアダプタの変更(USB型をつないでみる)等やるもだめ。VR環境でも非VR環境(Desktop mode)でも発生する。

ただ、VRChat IDに紐づいている問題ではないようで、オフィスで、会社の検証用PCを使って個人VRC IDでログインするぶんには問題がおきないことを確認。なので、PCか自宅ネットワークかどちらかに原因があるところまでは追い込んだ。

記憶が定かではないものの、確か問題発生してから自宅PC再インストールをしていたはずで、PC再インストールでも治らないのは本当に意味がわからないよ! 状態。この現象から察するに、何かPCの外、ルーターまわりが怪しいのでは? と結論付けるところまではきた。ただ、先に環境を書いたとおりNUROはルーター兼ONUをレンタルする方式なので、対策の入れようがない。F660Aの再起動、設定初期化などを実施するも変化なし。

解決

まぁこれだけ七転八倒した問題も、解決してしまうときはあっけない。別件で知人のv6/v4まわりのトラブルの相談に乗っていたとき、VRChatで過去に「リクイン通知が飛んでこない問題」ってのがあって、それが結局はVRChatのUpdateで直るわけなんだけど、その問題が直される前はv4優先(事実上のv6ほぼ無効化)で直ったという話しがふっと頭をよぎる。あ、もしかして?! と。

で、冒頭に書いたipv4をv6より優先する、どうしてもv4で通信できない相手とだけv6を使う、というv6普及初期によくやられていたなつかしのprefixpolicy設定を書いてやったら何てこったい2年悩んだ問題がさっくり解決しちゃったっぽい…。

考察

ここが本題。まったく音が聞こえません!とかだとまだ理解はできるし、解決もおそらく簡単。しかし今回の問題が難しかったことは「一定時間、それも15分~20分とかちょっと長めの時間で、一度に全員ではなく、ポツポツと聞こえなくなっていく」というあたり。しかもRe-Joinで解決するので、限りなくVRChat側のバグなんだろうと踏んでいたのだけれど、ネットワークまわりだった。

これ、実は問題の根源はv4だv6だという話しではなく、経路のどこかに組み込まれているセキュリティシステムが特定のv6パケットというか、v6 socketというかを握りつぶしていたのかも? Re-Joinすると一度音声の経路(Socketのようなもの?)がOpenされ、そこを音声パケットが流れていくのだけれど、一定のパケット数がそこを流れると・・・なのか、特定のパケットが流れたとき・・・・なのかはわからないけど、経路上の誰か(何か)がその経路からのパケット流れ込みを止めてしまう(捨ててしまう)ような感じだったのかなと。 

ただ、Windows Firewallのオフは試したし、同時にF660A(NUROの貸与ルーター)のv6 Firewall設定もオフを試したはず(同時オフまで試したかは自信がないが)。WX6000はそもそもブリッジなんで素通しだ。となると一体どこやねん…となるのだが…。ただ、わかったことはおそらくこの「流路をある条件で閉じてしまう誰か」はipv4パケットであればそれを作用させない、ということだった。

個人的には本件問題は根本解決したとは思っていない。「流路をある条件で閉じてしまう誰か、とは、誰だ?」を突き止めるられていないからだ。この時代にv6優先できないのは色々デメリットがあるし、「誰か」が今後のUpdateとか何かでv4でも閉じちゃうようになると詰んでしまう。

まだまだ予断を許さない状況ではあるものの、ひとまず問題状態から抜け出すことができたので、同じ症状に悩む誰かのために詳細状況を書き記しておくことにした。

おわりに

はたして「流路をある条件で閉じてしまう誰か」は一体誰なんだろうか。NURO…はまぁなさそう。なぜならNUROでVRChatをやっている人は五万といるが、NURO起因なら五万とこの問題に当たっているVRChatterがいるはずだ。NURO貸与ONUルーターのF660A? それも五万とはいないかもしれないが一万とはいるだろう。RealtekのGigabit Ethernet Chipのドライバまわり、というのだけはちょーっと疑ってはいるが、USB接続のEthernetアダプタ(LUA4-U3-AGTEなのでASIXのチップ)でも現象再発したのでそれはないきがする。ただ1点だけ気になるポイントとすれば、LUA4-U3-AGTEを使ってVRChatをすると高確率でネットワークハングアップ(アダプタの応答がなくなってVRChatが切れる)を起こしていた点か…。それがあったので検証が満足にできていない、というのはあるかもしれない。今度現象が再発するようなことがあったら、別の有線LANアダプタを試してみよう…。