When Apple discontinued iPhone Configuration Utility, we lost the ability to access certain kinds of information easily from iOS devices that had not yet completed the Setup Assistant. With iPCU, we could attach a device to a computer and then get information such as WiFi MAC Address and Bluetooth MAC Address (which are not written on the box, nor on the outside of the device). Anyone who requires any kind of MAC-address authentication for wireless (like me) will need this information before being able to activate iOS devices on our network.
Unfortunately, Apple Configurator doesn’t give this kind of information for devices that have not yet been Prepared. Xcode’s Devices window also doesn’t provide this information for attached devices. iPCU was the only tool that provided this info right off the bat.
Thankfully, Sam Marshall has provided us with some tools to get this information, by building a framework called iOSConsole. This does require compiling this project in Xcode, so there are a few steps that must be done first.
Major, major credit to Mike Lynn for his instructions on how to build this project – I wouldn’t have been able to do this without his help.
Obtain the Project Files
Update: Sam Marshall has provided a pre-built version of iOSConsole that is already signed, so you can simply download the release and skip to the “Using iOSConsole” section below. Thanks, Sam!
- Go to https://github.com/samdmarshall/SDMMobileDevice and download the Master as a zip.
- Go to https://github.com/samdmarshall/Core-Lib/tree/62b93fa94fbfde421ea8bb1513f5e935191e755d, which is a specific commit in time, and download the Master as a zip.
- Extract both archives.
SDMMobileDevice-master/Core/. The end result should look like
Alternatively, you can do it via git:
git clone https://github.com/samdmarshall/SDMMobileDevice.git
git submodule update --init --recursive
Build the Project
- Open SDMMobileDevice.xcworkspace
- Click on the scheme (to the right of the grey Stop square button) that currently says “reveal_loader” and change it to “iOSConsole”:
- Click on “iOSConsole” in the left sidebar:
- Go to the Product menu -> Scheme -> Edit Scheme:
- Change Build Configuration to “Release” (it defaults to Debug):
- With “iOSConsole” highlighted in left sidebar, you should see Build Settings menu:
- Scroll down to Code Signing section and make sure “Don’t code sign” is selected:
- Go to the Product menu -> Build for -> Running:
- The build should succeed after compiling.
- Click the disclosure triangle underneath iOSConsole in left sidebar.
- Click the disclosure triangle underneath “Products” under “iOSConsole”:
- Right click “iOSConsole” under “Products” and choose “Show in Finder”:
- This will open up the “Release” folder:
Navigate to this in Terminal (
cd :drag folder into Terminal:):
./iOSConsole --help to see available commands:
-h [service|query] : list available services or queries -l,--list : list attached devices -d,--device [UDID] : specify a device -s,--attach [service] : attach to [service] -q,--query <domain>=<key> : query value for <key> in <domain>, specify 'null' for global domain -a,--apps : display installed apps -i,--info : display info of a device -r,--run [bundle id] : run an application with specified [bundle id] -p,--diag [sleep|reboot|shutdown] : perform diag power operations on a device -x,--develop : setup device for development -t,--install [.app path] : install specificed .app to a device -c,--profile [.mobileconfig path] : install specificed .mobileconfig to a device
./iOSConsole -h query to see available information domains and keys to query
./iOSConsole --list (or
./iOSConsole -l) to list all attached iOS devices and get device identifiers for each device. You’ll need these device identifiers to specify which devices you want to query information from, using the
./iOSConsole -l Currently connected devices: (1) 1) d194149c6d840dcbabdd638d5aa5cee3e4eeb0c7 : iPad (iPad Air) (USB)
To get Ethernet Address (aka WiFi MAC address):
./iOSConsole -d d194149c6d840dcbabdd638d5aa5cee3e4eeb0c7 -q null=EthernetAddress
./iOSConsole -d d194149c6d840dcbabdd638d5aa5cee3e4eeb0c7 -q null=BluetoothAddress
Note that most values are unavailable until after activation takes place.
If you want to get all possible information from the device (this is quite a lot):
./iOSConsole -d d194149c6d840dcbabdd638d5aa5cee3e4eeb0c7 -q NULL=NULL
This tool allows you to get some hardware information from devices without having to complete the setup process first.