Several phones can receive the same software update and still miss different packets. Apple’s in-box updater uses nanorq, URSOID’s open-source rateless coding library, to help devices recover missing data from a shared transfer. 1
Preparing an iPhone before sale
An iPhone can leave the factory with one version of iOS and reach the store after another has been released. Updating it before sale moves that work out of the owner’s initial setup.
Apple’s Presto system makes this possible while the packaging remains sealed. As iGeneration describes, it combines a rack equipped with NFC and wireless charging with software running on a Mac mini. The Mac stores the update images and communicates wirelessly with the boxed phones, allowing the store to prepare its stock without unpacking each device. 2
Apple’s in-box updater draws on nanorq through MobileMulticastTransfer, its internal file-transfer framework. nanorq provides the encoding and recovery capabilities that help each device reconstruct the shared file. 1
Shared delivery, independent recovery
Multicast lets a sender distribute a common stream to several receivers. Reception still varies by device: a brief interruption may cause one phone to miss packets that others receive. Recovering the missing data is the coding library’s role.
nanorq implements RFC 6330. It processes a file in blocks, dividing each into small chunks called source symbols and generating repair symbols from them. A receiver combines the source and repair symbols it collects to reconstruct each block. Recovery requires enough independent information to decode successfully; the receiver can recover a missing source symbol without receiving that particular symbol again.
Consider two phones receiving the same block of an update. One misses its early packets; the other misses later ones. Additional repair symbols for that block can help both phones. Each decoder works with the data its phone received, so the sender can provide useful repair information to the group without tailoring every packet to an individual device’s losses.
A focused role within the update system
Apple’s framework exposes controls for symbol size and the amount of repair data, alongside methods for decoding blocks and assembling files. Choosing a repair allowance is an engineering tradeoff: more repair information gives receivers more opportunities to recover, but consumes additional transmission capacity. The rateless design lets the application choose a repair budget that suits the transfer.
The framework also exposes individual control connections alongside multicast reception, with interfaces for tracking progress and completion. Those responsibilities complement the codec: nanorq reconstructs missing information, while the surrounding software coordinates devices and manages the update workflow.
That division of responsibility keeps the library focused on a capability that developers and integrators can build into systems with their own constraints. Here, that capability is recovering a common file from different sets of received data.
The nanorq source and build instructions are available on GitHub for others to inspect, use and extend.
References
Footnotes
-
Software artifacts: in-box updater, iOS 18.4 beta; MobileMulticastTransfer declarations, macOS 26.4. These sources document only the software integration. ↩ ↩2
-
Florian Innocente, iGeneration. How Presto updates boxed iPhones, 26 March 2024. Physical workflow described in the public introduction. ↩