Can't get IPv6 requests to work

TLDR: Is there some trick to getting roUrlTransfer to work with IPv6?

I’ve started helping a bit with the Jellyfin Roku app: GitHub - jellyfin/jellyfin-roku: The official Jellyfin Roku Client · GitHub

One outstanding bug is that IPv6 requests won’t work from the Jellyfin app. The issue I’m seeing is that roUrlTransfer won’t make any IPv6 request.

My Roku is getting an IPv6 address, and I verified on my router that when I use the Prime Video app, I see IPv6 connections from the Roku to the internet.

If I insert these lines just before it tries the requests:

di = CreateObject("roDeviceInfo")
netconfig = di.GetConnectionInfo()

I see the IPv6 addresses in netconfig.ipv6.

When using an IPv6 URL in the format http://[addr]:8096 (with the real, public IPv6 address), resp.GetResponseCode() (at source/utils/misc.bs:247) is returning -7 (COULDNT_CONNECT).

And if I use a domain name that resolves only to an IPv6 address, I see only an A request and no AAAA request on my pihole, and the request fails with -6 (COULDNT_RESOLVE_HOST). Whereas I see an A and AAAA request for Amazon domains coming from my Roku when I use the Prime Video app.

Any ideas? I know that IPv6 was introduced in RokuOS 12. Is there something in this app that is making it backwards compatible with < RokuOS 12 and thus not using all the new features? I tried adding rsg_version=1.3 in the manifest (as a stab in the dark) but that didn’t change anything.

Can anyone point me to the code of a Roku app that is known to work with IPv6 so I can compare?

The IPv6 support that was enabled on older Roku OS releases was intended to support ISPs that were only giving IPv6 addresses to their users. Unfortunately, we have not enabled general IPv6 support in our client interfaces, so you can’t make an API call or stream from an IPv6-only server right now.

I’m confused then, since I see AAAA DNS requests and IPv6 connections coming from my Roku from the Prime Video app (the only one I tested). And the person who created the GitHub issue saw the same thing:

I am indeed running a Roku capable of IPv6 (Roku Ultra 2024) - other apps like Prime, Youtube, Netflix and Tubi on this device all make AAAA queries and stream content via IPv6 just fine.

What are those apps doing to make IPv6 connections?

My device is a 3820CA with OS 15.2.4

Prime Video is implemented using the NDK that’s only available to special partners.

I did get clarification that a DASH manifest can mention a host available over IPv6; the internal media player will resolve IPv6, but roUrlTransfer-based requests won’t use it at this time.

I guess that explains it. Thank you.

Do you know if a complete IPv6 implementation for the rest of us is anywhere on the horizon?

There have been discussions, but I can’t talk about future timelines or releases.