This is a macOS DriverKit driver implementation including a user interface App.
- Without a port link, the data is sent back to the sender
- With a port link, the data is written from sender 1 to receiver 2 and vice versa
- The client app provide installation, deinstallation and management
A look at this log shows how the driver ticks with the IOUserClient. This picture shows the VSP driver in action.
To build this project you have to do:
-
Install QT5 latest for Intel based macOS from archive
-
Install QT6 latest for M chip based macOS
-
Install the QT framework like
~/Qt
- run bootstrap.sh first to create dependecies to your QT frameworks
# Type a script or drag a script file from your workspace to insert its path.
# This scriptlet is only for Xcode custom build script in Build Phase
if [ "x${BUILT_PRODUCTS_DIR}" == "x" ] ; then
echo "Paste the script into Xcode Build Phase - custom build script, or"
echo "set QTDIR=<where your QT arch root>"
echo "set PROJECT_ROOT=`pwd`"
echo 'set BUILT_PRODUCTS_DIR=${PROJECT_ROOT}/build/xcode/<Debug|Release>'
echo 'set PLUGINS_FOLDER_PATH=DRFXBuilder.app/Contents/PlugIns'
exit 1
fi
echo "--- INSTALL QT-PLUGINS ---"
mkdir -p ${BUILT_PRODUCTS_DIR}/${PLUGINS_FOLDER_PATH}
cp -vR ${QTDIR}/PlugIns/* ${BUILT_PRODUCTS_DIR}/${PLUGINS_FOLDER_PATH}/
rm -fR ${BUILT_PRODUCTS_DIR}/${PLUGINS_FOLDER_PATH}/permissions
rm -fR ${BUILT_PRODUCTS_DIR}/${PLUGINS_FOLDER_PATH}/*/*.dSYM
You should use your own bundle IDs in targets VSPDriver and VSPClient.
Replace bundle ID "org.eof.tools.VSPDriver" in the Xcode VSPDriver target and replace bundle ID "org.eof.tools.VSPClient" in the Xcode VSPClient target
After that you must replace the Dext bundle ID "org.eof.tools.VSPDriver" in VSPClient.entitlements file.
Change the the bundle ID in "VSPClientUI/vscmainwindow.cpp" in method "createVspController()".
Turning off SIP is only possible in the Recovery OS. To do this for your hardware, follow the instructions in Apple's documentation.
In the Recovery OS, open the terminal window from the main menu and enter following command:
$> csrutil disable
$> csrutil enable
$> csrutil clear
$> sudo nvram boot-args="dk=0x8001"
$> sudo nvram -d boot-args
$> systemextensionsctl developer on
$> systemextensionsctl developer off
If you want to donate my work, please feel free. You can use the QR-Code too.
Thank you very much.