Skip to content

No Video on MediaTek Device (Samsung Galaxy A15)? #6

Description

@defrag-bambino

Hi,
I just tried out the WifiLink by RunCam. Using the FPV4Win Windows App I receive the video just fine. However, using the same External Wifi Module (the one that comes with the WifiLink-G version), the PixelPilot app does not display any stream.
I did use the correct gs.key, generated by the WifiLink board. I also tried switching to h264. I am on the correct channel 173 with both devices. The PixelPilot App just says "Starting wfb-ng on channel 173 ..." - but never displays anything.

I am using a Samsung Galaxy A15 (not 5G version), which is a pretty new phone (2024) with the latest Android version. It has a Mediatek Helio G99 processor, which seems to be capable of both h264 and h265 - so it should be capable of handling this use-case just fine.

Any ideas what may be going on here? Is there any possibility to get a logfile from the PixelPilot App?

Activity

  1. Epictek commented on Sep 20, 2024

    @Epictek
    Contributor

    This is a common issue with MediaTek SoCs as the third party encoder used the this app primarily supports snapdragon processors. Logs would be useful for debugging this issue

    For obtaining logs, once #3 is merged there will be a share button. But for now the only way to obtain logs is using logcat on a PC

  2. defrag-bambino commented on Sep 20, 2024

    @defrag-bambino
    Author

    Could you upload an .apk build of #3 while we wait?

  3. Epictek commented on Sep 20, 2024

    @Epictek
    Contributor

    Could you upload an .apk build of #3 while we wait?

    Built by GitHub, not tested myself and not endorsed by openipc
    https://github.com/Epictek/PixelPilot/releases/tag/latest

  4. defrag-bambino commented on Sep 20, 2024

    @defrag-bambino
    Author

    pixelpilot_log_20240920_202831.txt
    Do you know what to look for in there?

  5. Epictek commented on Sep 20, 2024

    @Epictek
    Contributor

    pixelpilot_log_20240920_202831.txt
    Do you know what to look for in there?

    Nothing jumps out straight away, another useful bit of information for debbuging would be the details of the HEVC decoder from https://play.google.com/store/apps/details?id=com.parseus.codecinfo

  6. defrag-bambino commented on Sep 20, 2024

    @defrag-bambino
    Author

    Ok:

    c2.android.hevc.decoder

    Hardware acceleration: false
    Software-only: true
    Low latency decoding: false
    Codec provider: Android platform
    Max supported instances: 32
    Max resolution: 1920x1088
    Max bitrate: 5 Mbps
    Frame rate: 0 — 960 fps
    Max frame rate per resolution:
    144p: 960,0 fps
    144p (YouTube): 853,3 fps
    240p: 409,6 fps
    240p (widescreen): 303,4 fps
    360p: 182,0 fps
    360p (widescreen): 136,5 fps
    480p: 102,4 fps
    480p (widescreen): 76,6 fps
    576p: 75,9 fps
    720p: 34,1 fps
    1080p: 15,2 fps
    Color profiles:
    COLOR_FormatSurface (0x7F000789)
    COLOR_FormatYUV420Flexible (0x7F420888)
    COLOR_FormatYUV420PackedPlanar (0x14)
    COLOR_FormatYUV420PackedSemiPlanar (0x27)
    COLOR_FormatYUV420Planar (0x13)
    COLOR_FormatYUV420SemiPlanar (0x15)
    Adaptive playback: true (required: false)
    Partial frames queuing: false
    Secure playback decryption: false
    Dynamic timestamp: false
    Multiple access units: false
    Tunneled playback: false
    Partial access units per input buffer: false
    Profile levels:
    HEVCProfileMain (0x1): HEVCHighTierLevel52 (0x80000)
    HEVCProfileMainStill (0x4): HEVCHighTierLevel52 (0x80000)

    c2.mtk.hevc.decoder

    Hardware acceleration: true
    Software-only: false
    Low latency decoding: false
    Codec provider: Device vendor / OEM
    Max supported instances: 12
    Max resolution: 2560x2560
    Max bitrate: 160 Mbps
    Frame rate: 0 — 960 fps
    Max frame rate per resolution:
    144p: 960,0 fps
    144p (YouTube): 960,0 fps
    240p: 960,0 fps
    240p (widescreen): 960,0 fps
    360p: 960,0 fps
    360p (widescreen): 960,0 fps
    480p: 960,0 fps
    480p (widescreen): 960,0 fps
    576p: 960,0 fps
    720p: 580,3 fps
    1080p: 257,9 fps
    Color profiles:
    COLOR_FormatSurface (0x7F000789)
    COLOR_FormatYUV420Flexible (0x7F420888)
    COLOR_FormatYUV420PackedPlanar (0x14)
    COLOR_FormatYUV420PackedSemiPlanar (0x27)
    COLOR_FormatYUV420Planar (0x13)
    COLOR_FormatYUV420SemiPlanar (0x15)
    Adaptive playback: true (required: false)
    Partial frames queuing: false
    Secure playback decryption: false
    Dynamic timestamp: false
    Multiple access units: false
    Tunneled playback: false
    Partial access units per input buffer: false
    Supported vendor parameters:
    vendor.mtk.ext.vdec.force.output.cc.value
    vendor.mtk.ext.vdec.hdr.feature-on
    vendor.mtk.ext.vdec.heif.feature-on
    vendor.mtk.ext.vdec.svp.feature-on
    vendor.mtk.ext.vdec.vilte.feature-on
    vendor.mtk.ext.vdec.vpp.disabled.value
    vendor.mtk.ext.vdec.vpp.motion.intpl.feature-on
    vendor.mtk.ext.vdec.vpp.motion.intpl.max-conversion-rate
    vendor.mtk.ext.vdec.vpp.motion.intpl.pixel-format
    vendor.mtk.ext.vdec.vpp.quality.tuner.feature-on
    vendor.mtk.ext.vdec.vpp.quality.tuner.pixel-format
    vendor.mtk.ext.vdec.vpp.resolution.scaler.feature-on
    vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-height
    vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-width
    vendor.mtk.ext.vdec.vpp.resolution.scaler.pixel-format
    vendor.mtk.intfimpl.thiz.value
    vendor.mtk.output.buffer.alloc.config.usage
    vendor.mtk.vdec.cpu.boost.mode.value
    vendor.mtk.vdec.force.pixel.format.value
    vendor.mtk.vdec.thumbnail.mode.value
    Profile levels: HEVCProfileMain (0x1): HEVCHighTierLevel51 (0x20000)

    c2.mtk.hevc.decoder.secure

    Hardware acceleration: true
    Software-only: false
    Low latency decoding: false
    Codec provider: Device vendor / OEM
    Max supported instances: 1
    Max resolution: 2560x2560
    Max bitrate: 160 Mbps
    Frame rate: 0 — 960 fps
    Max frame rate per resolution:
    144p: 960,0 fps
    144p (YouTube): 960,0 fps
    240p: 960,0 fps
    240p (widescreen): 960,0 fps
    360p: 960,0 fps
    360p (widescreen): 960,0 fps
    480p: 960,0 fps
    480p (widescreen): 960,0 fps
    576p: 960,0 fps
    720p: 580,3 fps
    1080p: 257,9 fps
    Color profiles:
    COLOR_FormatSurface (0x7F000789)
    COLOR_FormatYUV420Flexible (0x7F420888)
    COLOR_FormatYUV420PackedPlanar (0x14)
    COLOR_FormatYUV420PackedSemiPlanar (0x27)
    COLOR_FormatYUV420Planar (0x13)
    COLOR_FormatYUV420SemiPlanar (0x15)
    Adaptive playback: true (required: false)
    Partial frames queuing: false
    Secure playback decryption: true (required: true)
    Dynamic timestamp: false
    Multiple access units: false
    Tunneled playback: false
    Partial access units per input buffer: false
    Supported vendor parameters:
    vendor.mtk.ext.vdec.force.output.cc.value
    vendor.mtk.ext.vdec.hdr.feature-on
    vendor.mtk.ext.vdec.heif.feature-on
    vendor.mtk.ext.vdec.svp.feature-on
    vendor.mtk.ext.vdec.vilte.feature-on
    vendor.mtk.ext.vdec.vpp.disabled.value
    vendor.mtk.ext.vdec.vpp.motion.intpl.feature-on
    vendor.mtk.ext.vdec.vpp.motion.intpl.max-conversion-rate
    vendor.mtk.ext.vdec.vpp.motion.intpl.pixel-format
    vendor.mtk.ext.vdec.vpp.quality.tuner.feature-on
    vendor.mtk.ext.vdec.vpp.quality.tuner.pixel-format
    vendor.mtk.ext.vdec.vpp.resolution.scaler.feature-on
    vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-height
    vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-width
    vendor.mtk.ext.vdec.vpp.resolution.scaler.pixel-format
    vendor.mtk.intfimpl.thiz.value
    vendor.mtk.output.buffer.alloc.config.usage
    vendor.mtk.vdec.cpu.boost.mode.value
    vendor.mtk.vdec.force.pixel.format.value
    vendor.mtk.vdec.thumbnail.mode.value
    Profile levels: HEVCProfileMain (0x1): HEVCHighTierLevel51 (0x20000)

  7. changed the title [-]No Video on Samsung Galaxy A15?[/-] [+]No Video on MediaTek Device (Samsung Galaxy A15)?[/+] on Oct 5, 2024
  8. defrag-bambino commented on Oct 29, 2024

    @defrag-bambino
    Author

    What is the "third party encoder" used? May I open an issue in their github to get this fixed?

  9. floppyhammer commented on Jan 8, 2025

    @floppyhammer
    Contributor

    I also have some devices that don't show video. The problem seems to relate to the usb driver instead of the video decoder. The packet size gotten from adapter is always zero on those devices.

  10. floppyhammer commented on Jan 8, 2025

    @floppyhammer
    Contributor

    libusb_bulk_transfer always returns LIBUSB_ERROR_TIMEOUT in RtlUsbAdapter::infinite_read, which means there's no packet ever processed to feed the decoder.

  11. 493505110 commented on Feb 13, 2026

    @493505110
    Contributor

    I have same problem,here is my log: pixelpilot_log_20260213_110825.txt,and my phone is Redmi Note 11 5G(MediaTek Dimensity 810)

  12. robertgach62-tech commented on Mar 16, 2026

    @robertgach62-tech

    Same problem on Ulefone Armor X13 with a Mediatek MT6765

    pixelpilot_log_20260315_104921.txt

    This issue is a year old, makes me wonder if there is any active development going on.

    I'm regretting my Runcam Wifilink2 purchase, unusable on my two android platforms, only works on my PC desktop but thats no use in the field.

    Runcam's Fly app has the same problem.

  13. robertgach62-tech commented on Mar 16, 2026

    @robertgach62-tech

    From the logfile it seems like an issue with "devourer" libusb

  14. floppyhammer commented on Mar 17, 2026

    @floppyhammer
    Contributor

    @robertgach62-tech I'd like to look into it. But currently I don't own an Android device that can reproduce the issue. Would you mind helping test it?

  15. robertgach62-tech commented on Mar 17, 2026

    @robertgach62-tech

    @robertgach62-tech I'd like to look into it. But currently I don't own an Android device that can reproduce the issue. Would you mind helping test it?

    Hi, yes I would love to help in any way I can. Let me know what I can do to help test.

  16. 9 remaining items

  17. floppyhammer commented on Jul 20, 2026

    @floppyhammer
    Contributor

    @493505110 There have been a lot of changes on the master branch since the merge. I'm not sure what happened. Too many AI generated commits that I don't even want to look into it.

  18. 493505110 commented on Jul 20, 2026

    @493505110
    Contributor

    @493505110 There have been a lot of changes on the master branch since the merge. I'm not sure what happened. Too many AI generated commits that I don't even want to look into it.

    Image They deleted the file which you fix

    So master isn't working...(I guess)

    OpenIPC/devourer@40e3a2a

  19. josephnef commented on Jul 20, 2026

    @josephnef
    Collaborator

    Root cause found — this is a regression we introduced, and there's a test build to confirm the fix below.

    @floppyhammer's original fix (#19, shipped here in #97) had two halves, and a later devourer refactor kept one and dropped the other.

    On the affected MediaTek SoCs (Dimensity 810, Helio G99, MT6765) a USB bulk-IN read larger than 16 KB never completes — libusb_bulk_transfer returns LIBUSB_ERROR_TIMEOUT forever, so no packets reach the decoder and you get the green "Starting wfb-ng…" with no video. floppyhammer's fix addressed it on two sides:

    • device side — capped the chip's USB RX aggregation at ≤16 KB
    • host side — capped the bulk-IN read buffer at 16 KB

    When devourer's RX path was later rewritten (async multi-URB ring) and split into a separate transport file, the device-side cap survived but the host-side 16 KB read was lost — the new ring posts 32 KB reads. #104 was the first Android build to ship that rewritten RX path, which is exactly why master regressed while the March APK still works. @493505110's screenshot pointed straight at the right commit — thank you.

    Fixes:

    Unofficial test build: https://github.com/OpenIPC/PixelPilot/releases/tag/mtk-novideo-fix-test

    @493505110 (Dimensity 810) and @robertgach62-tech (MT6765) — you both hit this and kindly tested before; would you mind confirming video comes up with this build? And if anyone on a Snapdragon device can confirm it still works there (no regression on the mainstream path), that would close the loop.

    Assuming it checks out, it'd be worth cutting a fresh release afterward — the current situation where people build master by hand is part of how this reached everyone.

    Thanks again @floppyhammer for the original diagnosis and fix.

  20. 493505110 commented on Jul 20, 2026

    @493505110
    Contributor
  21. josephnef commented on Jul 20, 2026

    @josephnef
    Collaborator

    Thanks for testing so quickly @493505110 — good to know video comes up now.

    To pin down the difference from floppyhammer's build, could you help with two things:

    1. What does "not perfect" look like exactly? Occasional freezes/stutter, blocky artifacts or tearing, noticeably more latency/delay, or brief dropouts? Roughly how often does it happen?

    2. A log from the imperfect session would help a lot — the same pixelpilot_log_*.txt you shared earlier, captured while the "not perfect" behaviour is happening. That lets me compare the RX packet/error rates against a clean run.

    If it's easy, testing both builds back-to-back on the same channel and distance would also rule out signal conditions.

    For context: this fix restores video by matching floppyhammer's 16 KB USB read size, but the RX path has changed quite a bit since his build, so I'd rather find what's causing the quality gap than chase it blind.

  22. 493505110 commented on Jul 20, 2026

    @493505110
    Contributor
    1. you can see my video, it happens when the screen changes
    2. please wait, i will test it later

    both videos is same conditon except app

  23. 493505110 commented on Jul 20, 2026

    @493505110
    Contributor
  24. robertgach62-tech commented on Jul 20, 2026

    @robertgach62-tech
  25. robertgach62-tech commented on Jul 27, 2026

    @robertgach62-tech
  26. robertgach62-tech commented on Jul 31, 2026

    @robertgach62-tech

    I retried the test release and had strange mixed behaviour.
    With the wifi/otg adapter connected at the start I get no video however if I unplug/plug the connector it finds the video stream (no changes to tx side), sometimes with very bad quality (pixelated) and other times with good quality.
    I feel also that latency is slightly higher.

    Log file of this unplug/plug sequence pixelpilot_log_20260729_155446.txt

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions