HomeKit Accessory Development Kit (ADK)
The HomeKit ADK is used by silicon vendors and accessory manufacturers to build HomeKit compatible devices.
The HomeKit ADK implements key components of the HomeKit Accessory Protocol (HAP), which embodies the core principles Apple brings to smart home technology: security, privacy, and reliability.
The HomeKit Open Source ADK is an open-source version of the HomeKit Accessory Development Kit. It can be used by any developer to prototype non-commercial smart home accessories. For commercial accessories, accessory developers must continue to use the commercial version of the HomeKit ADK available through the MFi Program.
Go to the Apple Developer Site if you like to learn more about developing HomeKit-enabled accessories and apps.
- Please go through Developing with ADK before starting development with HomeKit ADK
- Platform Abstraction Layer
make TARGET=Linux apps
Run this to create the SD card image (Linux+patches) and a Docker container (your build environment). Make sure that Docker is running before running this setup or it will fail and you will have to start over! This will take about an hour and will stop for input many times. It will also require you to swap the card out twice.
# Run the Docker app. It is required for docker import. ./Tools/raspi_sdcard_setup.sh
make TARGET=Raspi all
If docker doesn't find "dev-test/raspiadk-base", run the sdcard setup and make sure to do the docker import at the end of the script.
After building, run this to install the build products to your RaspPi. (
-n is for the hostname of your RaspPi and
is the SSH password; both of these were chosen during the initial
./Tools/install.sh \ -d raspi \ -a Output/Raspi-armv6k-unknown-linux-gnueabihf/Debug/IP/Applications/Lightbulb.OpenSSL \ -n raspberrypi \ -p pi
|make APPS=<application>||Space delimited names of the apps to compile. Example:
|make BUILD_TYPE=<build_type>||Build type:
|make PROTOCOLS=<protocol>||Space delimited protocols supported by the applications:
|make TARGET=<platform>||Build for a given target platform:
||Build for the host Platform|
|make USE_HW_AUTH=<enable>||Build with hardware authentication enabled:
|make USE_NFC=<enable>||Build with NFC enabled: