High Level Overview
Some of this is outside the scope of SDK in FW 6.1 & 2016
At a high level, the Cradlepoint Router Apps/SDK is a mechanism to package a collection of files – including executable files – in an archive, which can be transferred securely via ECM, hidden within a Cradlepoint router, and executed as an extension to normal firmware. It is designed to take several forms:
- End-User / Customer files, limited to Python running at non-privileged permission levels, which means it cannot interact directly with the core Linux system.
- (Out of 2016 SDK Scope) Internal Cradlepoint code, loaded "secretly" via ECM, hidden yet running as an extension to core router functionality. Such code can be updated separately, without changing the normal firmware.
- (Out of 2016 SDK Scope) Third party modules, distributed from a form of ECM entitlement or future app store.
Key design features / values:
- (Out of 2016 SDK Scope) Design is not limited to Python or a specific collection of proprietary modules. It can include natively compiled embedded Linux.
- Code on the router is "write-only". Customers (and their customers) cannot copy off or migrate the code directly between routers. This protects the intellectual property of the creator of the code.
What is in Scope / Supported?
For the scope of this document, the Router Apps/SDK is limited to the non-privileged Python scripts. Supported functionality:
- Standard TCP/UDP/SSL socket servers function on ports higher than 1024
- Standard TCP/UDP/SSL socket client to other devices (or the router as 127.0.0.1/localhost)
- Access to serial ports via PySerial module, including native and USB-serial ports.
- Ability to PING external devices.
- Access to the Router API (aka: status and control tree data)
What is NOT in Scope / Not Supported?
- Any form of natively compiled or kernel linked code.
- Any function requiring privileged (or root) permissions.
- Assess to shared resources, for example – no ability to issue custom AT commands to cell modems.
- Modifications of routing or security behavior.
The supported set of routers is:
- AER – 1600/1650, 2100/2150, 3100/3150
- COR – IBR1100/1150, IBR900/IBR950, IBR600B/IBR650B, IBR350
- ARC CBA850
New routers products will support SDK - unless they are a special low-function low-cost model.
Existing products like IBR600 or IBR650 will NOT be supported due to physical flash memory limitations.