Looking for feedback on a small web tool I built
Hi everyone, I’ve been experimenting with building small web tools recently just to practice and learn. One of the things I built is a simple browser-based counter that can be used to count clicks, track repetitions, or test clicking speed. You can check it here: https://thetallycounter.com/ The goal was to keep it lightweight and simple so it works quickly on both desktop and mobile without needing to install anything. I’d really appreciate any feedback from other developers. Does the interface feel easy to use? Are there any features you think would make it better? Thanks in advance for any suggestions.7Views0likes0CommentsUSB: Input-Only Microphone Should Not Mute Built-in Speakers, Technical Analysis & Proposed Fix
When any USB-C audio device is connected to Quest 3 — even an input-only microphone with no speaker/DAC capability — Meta Horizon OS routes ALL audio (both input AND output) to the USB-C port and mutes the built-in headset speakers. This contradicts standard Android AOSP behavior and blocks legitimate professional use cases. The Problem Many professional VR applications need external microphone input (for speech recognition, recording, or communication) while maintaining audio output through the built-in speakers. Examples include therapeutic VR, education, accessibility, content creation, live streaming, and enterprise training. We purchased a USB-C gooseneck microphone that is input-only (no speaker, no DAC, isSink=false). On standard Android devices, connecting this mic only affects audio input — speakers continue working. On Quest 3, the built-in speakers are immediately muted, even though the USB device has zero output capability. What We've Tried (Everything Fails) 1. usb_audio_automatic_routing_disabled=1 (ADB): Does not selectively disable routing — prevents the USB device from registering with AudioService entirely (UsbAlsaManager.selectAlsaDevice() returns early), so setPreferredDevice() cannot find the mic at all. 2. AudioManager.setCommunicationDevice(builtInSpeaker) (API 31+): Only affects USAGE_VOICE_COMMUNICATION streams, not media/game audio. Unity uses FMOD → AAudio (native C layer), which routes through USAGE_GAME — unaffected. 3. AudioTrack.setPreferredDevice(builtInSpeaker): Would require intercepting the engine's internal audio output at the native layer — not feasible, and Quest 3's audio HAL may override it anyway. 4. "External Microphone" toggle (Settings > Advanced, v64+): Enables USB mic recognition only. Does NOT provide split input/output routing. 5. Input-only USB mic (isSource=true, isSink=false): Expected AOSP-compliant behavior (only input rerouted). Built-in speakers are still muted. Root Cause Analysis — AOSP vs. Meta Horizon OS In upstream AOSP, UsbAlsaManager.java checks actual device capabilities via USB Audio Class descriptors: // AOSP: frameworks/base/services/usb/java/com/android/server/usb/UsbAlsaManager.java private void selectAlsaDevice(UsbAlsaDevice alsaDevice) { UsbDescriptorParser parser = alsaDevice.getParser(); if (parser.hasOutput()) { // Only register OUTPUT if USB device has playback capability alsaDevice.startOutput(); } if (parser.hasInput()) { // Only register INPUT if USB device has capture capability alsaDevice.startInput(); } } The AOSP AudioPolicyManager then only reroutes streams matching registered capabilities. An input-only device never triggers checkOutputsForDevice(), so speakers remain active. Meta's Horizon OS overrides this separation. The most likely cause: // Probable Meta override (simplified): void AudioPolicyManager::onNewUsbDevice(audio_devices_t device) { // Does not check if device has output capability setDeviceConnectionState(AUDIO_DEVICE_OUT_SPEAKER, AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE); setDeviceConnectionState(AUDIO_DEVICE_OUT_USB_DEVICE, AUDIO_POLICY_DEVICE_STATE_AVAILABLE); } Proposed Fix Check the USB device's Audio Class descriptors before modifying output routing: void AudioPolicyManager::onNewUsbDevice(const sp<UsbAlsaDevice>& device) { if (device->hasCapture()) { setDeviceConnectionState(AUDIO_DEVICE_IN_USB_DEVICE, AUDIO_POLICY_DEVICE_STATE_AVAILABLE); } if (device->hasPlayback()) { // Route output to USB ONLY if device has output capability setDeviceConnectionState(AUDIO_DEVICE_OUT_USB_DEVICE, AUDIO_POLICY_DEVICE_STATE_AVAILABLE); } // If !hasPlayback(): leave built-in speaker routing UNCHANGED } This is a single conditional check in the audio policy layer. It requires zero UI changes and simply aligns Quest 3 with upstream AOSP behavior. Additional Solutions (If a Broader Fix is Planned) - User-facing setting: Add "Audio Output" under Settings > Sound with options "Headset Speakers" / "USB-C" / "Automatic", independent of input routing. - Developer API: Allow applications to call setPreferredDevice() with routing respected for all audio usages (not just USAGE_VOICE_COMMUNICATION). Impact The Quest 3 hardware is fully capable — speakers and USB operate on independent audio paths. This is purely a software routing policy that could be resolved with a minimal code change. The fix would unblock every developer building applications that need external audio input while maintaining speaker output. Happy to provide dumpsys audio output or USB device descriptors to help diagnose the exact policy override. Related: A similar request was posted on the archived forum: "Request for Enhanced Audio Routing Controls with External Microphones on Meta Quest" (jrb-vr, October 2024) — which received no response.31Views0likes1CommentStuck in Verification Loop - Cannot Create App for WhatsApp API
Hello, I am stuck in a verification loop when trying to create a new app for the WhatsApp Business API. My Goal: To create a "Business" type app to integrate with the WhatsApp Business Platform. The Problem: Every time I click "Create App" on the developers.facebook.com dashboard, I am redirected to the "Verify Your Account" page (see attached screenshot), even though my account is already fully verified. What I have already done: My account has 2-Factor Authentication (2FA) enabled. My phone number is fully verified in the main Meta Accounts Center. I have tried this in multiple browsers (Chrome, Firefox) and in InPrivate/Incognito mode. The verification for my credit card also fails. I was able to successfully create a developer organization ("Umiya Agro Digital") through the Meta Quest developer dashboard (developer.oculus.com), so my account is recognized as a developer account on that new system. However, the developers.facebook.com platform does not recognize this and keeps forcing me into this broken registration flow. I cannot proceed. Please advise.9Views0likes0CommentsOakley Meta Glasses - 16:4 - Landscape
Tried searching for topics relating to this but unable to find anything. Dearly hoping that there are plans afoot for a firmware release from Meta that facilitates these great glasses with the ability to film in landscape mode. I am worried that this has been a massive oversight, a what could have been potentially the most revolutionary piece kit, might end up falling short at the last hurdle. If this is the case I might just have to offload them and switch back to my other action camera. Come on Meta, please shed some light on what may or may not be on the way... at least a little hint please.7Views0likes0CommentsUnity WebRTC stream from iOS companion app → Quest headset connects but displays black frames
Hello everyone, My name is Mason. I’m a graduate student at Kennesaw State University and a Research Engineer working in XR environments through my Graduate Research Assistant role. I’m currently building a research prototype that connects a mobile companion application to a VR headset so that a VR user can view media stored on their phone inside a VR environment. The system uses a Unity-based mobile application to stream video frames to a Unity-based VR application using WebRTC Environment Sender Device: iPhone 15 OS: iOS 26.3 Engine: Unity 6000.3.8f1 (Unity 6.3) Graphics API: Metal Receiver Device: Meta Quest Pro headset (Unity application) Streaming Technology: Unity WebRTC package Architecture Mobile Unity app acts as the WebRTC sender Quest Unity app acts as the WebRTC receiver Connection established over LAN UDP used for discovery TCP used for signaling Video Source: Unity RenderTexture Goal The goal of the system is to allow a VR user to browse and view media stored on their phone inside a VR environment. The pipeline currently works as follows: The mobile Unity app renders media content to a RenderTexture The RenderTexture is used to create a WebRTC video track The video track is streamed to the headset The Quest app receives the track and displays it on a surface inside the VR scene Current Status Connection setup appears to work correctly. Observed behavior: Discovery between devices works Signaling connection succeeds ICE candidates exchange successfully PeerConnection state becomes Connected Video track is created and negotiated However, the Quest application displays only black frames. Sender (iOS) Behavior Inside the phone application, the RenderTexture displays correctly and the scene renders normally. Frames appear correct locally inside the Unity scene. Despite this, the Quest receiver does not display the frames. Receiver (Quest) Behavior On the Quest side, the WebRTC connection establishes successfully and the video track appears active. The video texture updates, but the displayed output is completely black. Expected Behavior The frames rendered on the phone should appear in the VR scene on the Quest headset. Actual Behavior The WebRTC connection works, but the Quest receiver only shows black frames. Things I Am Investigating Unity WebRTC compatibility with Unity 6.3 Metal texture capture limitations on iOS RenderTexture pixel format compatibility GPU readback or synchronization issues Differences between desktop Unity WebRTC streaming and iOS streaming Questions Has anyone successfully streamed Unity RenderTextures from iOS to Quest using WebRTC Are there known compatibility issues with Metal-based textures being used as WebRTC sources? Are there specific RenderTexture formats or texture types required for WebRTC on Quest Could this behavior indicate a GPU synchronization or pixel format issue? I can provide Unity console logs, WebRTC negotiation logs, screenshots of sender and receiver output, RenderTexture configuration, and minimal code snippets if needed. If anyone has experience building mobile-to-Quest streaming pipelines or using WebRTC in XR applications, I would greatly appreciate any guidance. Thank you for your time.12Views0likes0CommentsNPCs with Avatar/Style2Meta material are invisible on Meta Quest
I've rigged, animated, and imported avatars into my Unity project and scene as prefabs. I've created new materials for them with the same shader as my player avatar utilizes when he loads in - Avatar/Style2Meta. When playing the project on my laptop, I can see my Avatar NPCs with those materials fine. As soon as I build and run the project on my Meta Quest 2, they become invisible. I really like the shader, so I wanna keep it and not compromise for using two different materials for player and NPC avatars. Why does it happen only when playing on the headset, and how do I fix it?45Views0likes2CommentsEU Meet up?
Hey, quick one for anyone EU based and feeling some GDC FOMO this week lol. The 1st weekend in April there’s a VR LAN event in Amsterdam which a close friend is running. I'll be speaking on stage about Meta horizon, and thought it would be a great excuse for an EU creator meet up! A couple MHCP partners have expressed interest so thought I would share here too. If you’re interested lmk and i'll sort you discounted tickets. http://vr-lan.com/ 3rd+4th April, Amsterdam, NL8Views0likes0CommentsHello,i have put wrong tax information
Hi everyone, I'm Gianluca and I'm writing from Italy. When I created my profile, I entered incorrect information regarding my nationality. I'm Italian and my temporary bank is in Lithuania. I mistakenly entered that I'm Lithuanian too, but that's incorrect because I'm Italian and I also opened a new bank account in Italy. Which support team should I contact? No one has been able to help me. They told me to create a new account, but I don't want to lose my current earnings. Can I transfer my account admin to another team, still within my same profile email?8Views0likes0CommentsMQDH v6.3.x - slow and unresponsive
MQDH software has been mostly smooth on my windows PC but since upgrading it to v6.3.x I am constantly facing problem with MQDH freezes when scrolling, clicks are unresponsive and switching tabs are also slow. Another problem is every time I turn on my PC, there's this window's permission pop-up asking me to grant access to Quest Link, why does it ask me every single time I turn on my PC? It's super annoying. My PC: - Windows 11 - 24 GB RAM - 1 TB Free Storage - AMD Ryzen 5 3400G processor - 2GB AMD Graphics card7Views0likes0CommentsMeta XR Simulator Broken/Version Mismatch (81 vs 85)
i haven't been able to get the Meta XR Simulator to work inside unity3d. The Latest version of the Meta XR SDK is 85.0.0 but the Meta XR Simulator is 81.0.0. If i use the wizard to update the package, it gives an error trying to download it. If i try to manually update it, the package manager has a latest version of 81.0.0. And when i try to activate the simulator it will say its not found) If i downgrade everything to 81.0.0 it still has the issue. It seems like i am not the only person having this issue as the reviews have a lot of people having the same complaint: https://assetstore.unity.com/packages/tools/integration/meta-xr-simulator-266732#reviews Any suggestions on how to get the XR Simulator working? Or if it's just broken for everyone.