Skip to content

Custom OSC address conflicts with loopback only receiving #380

Description

@cstria0106

OscRecvService and OscQueryService use DestinationAddress to construct the receive endpoint, but OscRecvService.UpdateTarget rejects any address other than 127.0.0.1:

Cannot bind to non-loopback IP

The _osc._udp advertisement is also hardcoded to 127.0.0.1, regardless of the configured address.

Observed Behavior

With the OSC Address set to my PC's LAN IP, outgoing face tracking works, but switching avatars does not update VRCFT's avatar information or parameters.

Tested on Windows with both apps on the same PC and a local VRCFT build based on commit 6432e6a.

Local Workaround

I modified the VRCFT source locally and rebuilt it with the following changes:

  • Removed the loopback-only check in OscRecvService.UpdateTarget to allow binding to the PC's LAN IP.
  • Changed the _osc._udp advertisement to use the actual receive endpoint address.
  • Kept the configured receive port for LAN addresses instead of switching to a dynamically assigned port.

With this modified build, Receive Port set to 9001, and VRChat launched with the following option, avatar switching worked:

--osc=9000:<PC-LAN-IP>:9001

OSCQuery connection errors remained; the explicit OSC output path worked.

If there is no specific reason to restrict receiving to localhost, I think this should be updated to support the configured local address and advertise the matching receive endpoint.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions