I'm trying to connect my SC2 to a Wi-Fi Access Point which is a bridge in between the SC2 and Disco.
This is not possible unless the AP is listed in drone_manager.cfg and has the Parrot specific vendor element with a PIxxxxxxxxxxxxxxxx serial number in it.
Correct. We use the wifi beacons to detect whether an access point is from a Parrot drone, or from another access point. Then we use the serial number (PIxxx...) to choose on which access point to connect. This allow us to have a strong pairing which is not lost if the user changes the name of the drone's access point.
However, I am able to force connect my SC2 to an arbitrary AP by using wifid-cli on my SC2 (via adb). However, mppd detects the change in Wi-Fi connection and re-connects to the drone_manager.cfg's AP.
Is there any way I can change this behaviour? As far as I know, mppd is not part of the SDK, so its source code is not publicy available, am I right?
No, you can't change this behavior. As you've seen, the SC2 firmware is closed source, so you can't modify the software*. The product was designed to achieve a high reliability of the wifi connection, so the wifi network selection, wifi connection, and drone connection are tightly linked inside the
mppd process. We don't provide any configuration to delegate the wifi selection to another process.
*: You can build your own software since we provide the kernel sources and the toolchain for the product, as per GPL requirements, but it would be rather complicated to replace
mppd with your own software, because
mppd does basically all the work in the product.