Licensing
Usage of ControlFloor requires a license. For trial purposes it can be setup and will function without a license controlling the "Notes" iOS application.
Prerequisites
iOS version | |
---|---|
- | MacOS 12+ ( Monterey or newer ) |
< 17.0 | XCode 12+ |
17.0 - 17.3 | XCode 15+ |
17.4+ | XCode 15.3+ |
- | Per device: Pair / Trust |
16+ | Per device: Enable development mode |
- | Per device: Deploy any app to your device ( so that a provisioning profile is available for signing ) |
17+ | Per device: Have internet access; wifi/4g/etc ( needed for app verification ) |
- | Per device: Disable sleep ( Settings->Display & Brightness->Auto-Lock = Never ) |
- | Per device: For on-screen keyboard automation, only 2 keyboards installed:
|
1. Download, extract, and run setup
/bin/bash -c "$(curl -fsS https://controlfloor.com/dl/install.sh)"
If initial setup fails, you can rerun setup:
cd ~/cf
./setup.sh
2. Re-sign apps
ControlFloor utilizes a few iOS apps to function. These need to be signed with your own Apple credentials. A mobile provisioning profile configured with your iOS devices is needed.
We provide a tool to assist in this signing:
./apps/Utils/sign_all.macos.sh
That will output something like this:
Set 'CFA_SIGNING_IDENTITY' to a valid signing identity and run again
Available code signing identities:
1) 9CABA8B8B7B6B5B4B3B "Apple Development: [Your Name] (YOURIDENTIFIER)"
...
Set 'CFA_PROVISIONING_PROFILE' to a valid .mobileprovision file and run again.
You currently have these profiles available:
"/path/to/MobileDevice/Provisioning Profiles/xxyyzz.mobileprovision"
Decide which signing identity and profile and use them as follows:
security unlock
export CFA_SIGNING_IDENTITY=[Your signing identity, i.e. 9CABA8B8B7B6B5B4B3B]
export CFA_PROVISIONING_PROFILE="/path/to/MobileDevice/Provisioning Profiles/xxyyzz.mobileprovision"
./apps/Utils/sign_all.macos.sh ./apps/*.app
Successful output should end with:
=== Signing ./apps/vidstream.app ===
PlugIns/CF Vidstream Extension.appex: replacing existing signature
./apps/vidstream.app: replacing existing signature
After adding new devices, this signing process must be repeated with your updated mobileprovision file. You will also need to resign apps after updating to a new version of ControlFloor.
3. Configure server
Options for ControlFloor server are at ~/cf/server/config.json
Change HTTP setup within server/config.json as desired:
listen: ":8080"
https: true
HTTPS notes
By default, ControlFloor will generate a self-signed HTTPS certificate. If you have your own certificate, you can either replace the local files ~/cf/server/server.key and server.crt, or indicate where to find your cert in config.json.
As an example, if using letsencrypt for your certificates, you would set the following in config.json:
crt: "/etc/letsencrypt/live/[your-dns-name]/fullchain.pem"
key: "/etc/letsencrypt/live/[your-dns-name]/privkey.pem"
Login management
You will be prompted for a password for the 'admin' user during setup. Additional users can be managed on the commandline using cfserver's "create-user" and "modify-user" options. For example, to create a new user:
./cfserver create-user -username sample_user
To change the admin password after setup:
./cfserver modify-user -username admin -change-password
4. Start the server
./cfserver run
If you did not change the default HTTP setup, you can now open ControlFloor server in your browser at https://localhost:8080.
5. Configure Provider
Update ~/cf/provider/config.json as needed:
licenseKeys: [
"[place your license key here]"
]
controlfloor: {
host: "localhost:8080" // update to match the location of cfserver
https: true // match to how you setup the server
selfSigned: true // allow self signed server certificate
}
6. Register Provider with Server
The provider running on your local machine will automatically be paired with ControlFloor server using the username "provider1" and a randomly-generated password. If you are configuring additional providers, you will need to register them with ControlFloor server using the command:
./cfprovider register
You will be prompted for the login credentials of an admin user, and details for the provider. The
new provider will be assigned a login and a random password for connecting to the server.
7. Run Provider
Provider can run either for a single device, or for all devices on your system. The single-device command is:
./cfprovider run --udid [udid]
To get a list of UDIDs of your devices:
./bin/go-ios list --details --pretty
In "runner" mode, cfprovider will automatically handle all connected devices.
./cfprovider runner
8. Additional device setup (license required)
For full functionality, the following must be done for each iOS device:- Disable automatic screen lock ( mentioned above )
- Configure Assistive Controls ( for task manager and "shake" actions )
- Disable "smart" keyboard functions for keyboard automation ( auto-correct, auto-capitalization, smart-punctuation, etc )
To have the system do this setup for you (except for screen lock):
- Select an iOS device in ControlFloor website
- Select Menu->Command Window
- From the dropdown menu, select "Device Initialization"->"Initialize Device(All Settings)"
- Initialization and keyboard detection takes 5~10 minutes to complete.
- You do not need to leave your browser open while this runs.
9. Troubleshooting
For additional information, see the troubleshooting section of the ~/cf/README