Skip to content

v1.4.7

Choose a tag to compare

@catxeon catxeon released this 23 Oct 19:30
· 4 commits to main since this release

Snapdragon 865/870 with the X55 modem

Phones built on the Snapdragon 865, 865+ and 870 — Poco F3, Mi 10/11i, OnePlus 8, ROG Phone 3, the US Galaxy S20 and others — could not connect at all. They failed with "EFS2 did not answer on subsystem 0x3E or 0x13 (bad command)". Thanks to @victor186 for the verbose log that pinned it down (#5).

On these phones the modem is a separate chip, the X55, attached over PCIe. Its DIAG never appears on the QRTR bus, where the helper looks: only the phone's DSPs publish DIAG there. The helper took the first of those, an audio DSP with no EFS behind it.

Two changes:

  • Only the modem's own DIAG is used. DIAG endpoints that belong to a DSP are skipped, and the error names them instead of failing with a puzzling "bad command".
  • An external modem is reached through /dev/diag. When the bus has no modem DIAG, the helper opens /dev/diag, asks the kernel driver to route to the external modem, and takes only the answers that come from it. SELinux is not touched; it works under enforcing.

Phones that already worked are unaffected: QRTR is still tried first, and they take exactly the path they took before.

Status on the X55: confirmed on a Poco F3 that the app connects and lists the EFS. Reading file contents, writing and restarting the modem over /dev/diag have not been confirmed on that hardware yet — if you try them, a report with Verbose helper log ticked is very welcome. Back up EFS before writing anything, as always.

The verbose log's bus scan now tells the modem's DIAG apart from a DSP's, so on any phone it says plainly whether the modem is on the bus.

The bundled helper is 1.4.7, matching the app.