Softeq software and low-level programming engineers implemented the device functionality and developed an iOS app for device management.
iBridge, the first mass storage device that connects to mobile phones, tablets and computers, has 16 — 256 GB memory storage capacity. The device provides the following:
iBridge is designed:
The major part of the accessory’s code is written in C with the rest of the functionality covered by Assembler for 8051 microcontroller. The team also created several auxiliary utilities in Python.
From the architecture perspective, the solution is part of firmware which leverages Apple’s proprietary iAP2 protocol over USB. The solution is based on firmware of an existing USB mass storage device.
The Softeq team used the External Accessory Framework to develop a component that enables the app to communicate with iBridge. The team also implemented the library that uses SCSI commands level to interact with the firmware level, as well as ported a 3d party library to work with the FAT32 file system.
From the app perspective, apart from user functionality (file view and navigation, video playback, etc.) and file system abstraction layer (file opening, writing, reading, etc.) developed before Softeq jumped in the project, the following levels were implemented:
The team designed a PCB enabling iBridge to function as a USB flash drive with Apple’s Lightning connector integrated on the opposite end. The PCB automatically identifies the connector type and commutates the power supply and USB lines. The board also has all the necessary protection mechanisms in place to support simultaneous iPhone (iPad, iPod) to iBridge to PC connection.
The iAP2 protocol was rolled out on Linux using USB Mass Storage Gadget — g_mass_storage. The team also developed an I2C driver for the Apple authentication coprocessor, which is critical for the iBridge to iPhone connection. PandaBoard ES was used as a hardware platform.
Besides, the Softeq engineers developed an iOS POC app with the basic communication level and file system.