From 703839028e81ac91a511ed60f87de3e610e8c383 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Tue, 11 Nov 2014 23:40:11 +0100 Subject: [PATCH 01/11] Added support for 10.4 Tiger and PowerPC. --- HoRNDIS-Info.plist | 4 +- HoRNDIS.cpp | 44 ++-- HoRNDIS.h | 4 +- HoRNDIS_PPC.xcodeproj/TemplateIcon.tiff | Bin 0 -> 3068 bytes HoRNDIS_PPC.xcodeproj/project.pbxproj | 327 ++++++++++++++++++++++++ 5 files changed, 355 insertions(+), 24 deletions(-) create mode 100644 HoRNDIS_PPC.xcodeproj/TemplateIcon.tiff create mode 100644 HoRNDIS_PPC.xcodeproj/project.pbxproj diff --git a/HoRNDIS-Info.plist b/HoRNDIS-Info.plist index 546e90f..31e878e 100644 --- a/HoRNDIS-Info.plist +++ b/HoRNDIS-Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion English CFBundleExecutable - HoRNDIS + ${EXECUTABLE_NAME} CFBundleGetInfoString Android/RNDIS tethering driver CFBundleIconFile @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - HoRNDIS + ${PRODUCT_NAME} CFBundlePackageType KEXT CFBundleShortVersionString diff --git a/HoRNDIS.cpp b/HoRNDIS.cpp index 8aa2cc9..36f390b 100644 --- a/HoRNDIS.cpp +++ b/HoRNDIS.cpp @@ -46,7 +46,7 @@ OSDefineMetaClassAndStructors(HoRNDISInterface, IOEthernetInterface); bool HoRNDIS::init(OSDictionary *properties) { int i; - LOG(V_NOTE, "HoRNDIS tethering driver for Snow Leopard+, by Joshua Wise"); + LOG(V_NOTE, "HoRNDIS tethering driver for Mac OS X, by Joshua Wise"); if (super::init(properties) == false) { LOG(V_ERROR, "initialize super failed"); @@ -445,7 +445,7 @@ bool HoRNDIS::allocateResources() { inbuf.mdp = IOBufferMemoryDescriptor::withCapacity(MAX_BLOCK_SIZE, kIODirectionIn); if (!inbuf.mdp) return false; - LOG(V_PTR, "PTR: inbuf.mdp: %p", i, inbuf.mdp); + LOG(V_PTR, "PTR: inbuf.mdp: %p", i, inbuf.mdp); /* does this i belong here? */ inbuf.mdp->setLength(MAX_BLOCK_SIZE); inbuf.buf = (void *)inbuf.mdp->getBytesNoCopy(); @@ -784,7 +784,7 @@ IOReturn HoRNDIS::clearPipeStall(IOUSBPipe *thePipe) { /***** Packet receive logic *****/ void HoRNDIS::dataReadComplete(void *obj, void *param, IOReturn rc, UInt32 remaining) { - HoRNDIS *me = (HoRNDIS*)obj; + HoRNDIS *me = (HoRNDIS *)obj; IOReturn ior; if (rc == kIOReturnAborted || rc == kIOReturnNotResponding) { @@ -840,12 +840,12 @@ void HoRNDIS::receivePacket(void *packet, UInt32 size) { data_ofs = le32_to_cpu(hdr->data_offset); data_len = le32_to_cpu(hdr->data_len); - if (hdr->msg_type != RNDIS_MSG_PACKET) { + if (hdr->msg_type != RNDIS_MSG_PACKET) { /* both are LE, so that's okay */ LOG(V_ERROR, "non-PACKET over data channel? (msg_type %08x)", hdr->msg_type); return; } - if (hdr->msg_len > size) { + if (msg_len > size) { LOG(V_ERROR, "msg_len too big?"); return; } @@ -875,8 +875,8 @@ void HoRNDIS::receivePacket(void *packet, UInt32 size) { LOG(V_DEBUG, "submitted pkt sz %d", data_len); fpNetStats->inputPackets++; - size -= hdr->msg_len; - packet = (char *)packet + hdr->msg_len; + size -= msg_len; + packet = (char *)packet + msg_len; } } @@ -884,6 +884,8 @@ void HoRNDIS::receivePacket(void *packet, UInt32 size) { /***** RNDIS command logic *****/ int HoRNDIS::rndisCommand(struct rndis_msg_hdr *buf, int buflen) { + static IOLock *xid_lock = IOLockAlloc(); // TODO: memory leak? should NULL check on first call. + int count; int rc = kIOReturnSuccess; IOUSBDevRequestDesc rq; @@ -893,10 +895,16 @@ int HoRNDIS::rndisCommand(struct rndis_msg_hdr *buf, int buflen) { LOG(V_PTR, "PTR: rxdsc: %p", rxdsc); if (buf->msg_type != RNDIS_MSG_HALT && buf->msg_type != RNDIS_MSG_RESET) { - /* lock? */ + IOLockLock(xid_lock); + + /* lock? => Yes */ buf->request_id = cpu_to_le32(xid++); if (!buf->request_id) buf->request_id = cpu_to_le32(xid++); + + IOLockUnlock(xid_lock); + + LOG(V_DEBUG, "Generated xid: %d", xid); } memcpy(txdsc->getBytesNoCopy(), buf, le32_to_cpu(buf->msg_len)); @@ -941,7 +949,7 @@ int HoRNDIS::rndisCommand(struct rndis_msg_hdr *buf, int buflen) { if (inbuf->status == RNDIS_STATUS_SUCCESS) { /* ...and copy it out! */ LOG(V_DEBUG, "RNDIS command completed"); - memcpy(buf, inbuf, le32_to_cpu(rxrq.wLenDone)); + memcpy(buf, inbuf, rxrq.wLenDone); break; } LOG(V_ERROR, "RNDIS command returned status %08x", inbuf->status); @@ -951,16 +959,12 @@ int HoRNDIS::rndisCommand(struct rndis_msg_hdr *buf, int buflen) { LOG(V_ERROR, "RNDIS return had incorrect xid?"); } } else { - switch (inbuf->msg_type) { - case RNDIS_MSG_INDICATE: - LOG(V_ERROR, "unsupported: RNDIS_MSG_INDICATE"); - break; - case RNDIS_MSG_KEEPALIVE: - LOG(V_ERROR, "unsupported: RNDIS_MSG_KEEPALIVE"); - break; - default: - LOG(V_ERROR, "unexpected msg type %08x, msg_len %08x", inbuf->msg_type, inbuf->msg_len); - break; + if (inbuf->msg_type == RNDIS_MSG_INDICATE) { + LOG(V_ERROR, "unsupported: RNDIS_MSG_INDICATE"); + } else if (inbuf->msg_type == RNDIS_MSG_INDICATE) { + LOG(V_ERROR, "unsupported: RNDIS_MSG_KEEPALIVE"); + } else { + LOG(V_ERROR, "unexpected msg type %08x, msg_len %08x", inbuf->msg_type, inbuf->msg_len); } } @@ -995,7 +999,7 @@ int HoRNDIS::rndisQuery(void *buf, uint32_t oid, uint32_t in_len, void **reply, memset(u.get, 0, sizeof(*u.get) + in_len); u.get->msg_type = RNDIS_MSG_QUERY; - u.get->msg_len = (uint32_t)cpu_to_le32(sizeof(*u.get) + in_len); + u.get->msg_len = cpu_to_le32(sizeof(*u.get) + in_len); u.get->oid = oid; u.get->len = cpu_to_le32(in_len); u.get->offset = cpu_to_le32(20); diff --git a/HoRNDIS.h b/HoRNDIS.h index 63e38be..a338452 100644 --- a/HoRNDIS.h +++ b/HoRNDIS.h @@ -58,8 +58,8 @@ extern "C" #include } -#define cpu_to_le32(x) ((uint32_t)(x)) -#define le32_to_cpu(x) ((uint32_t)(x)) +#define cpu_to_le32(x) (uint32_t)OSSwapHostToLittleInt32(x) +#define le32_to_cpu(x) (uint32_t)OSSwapLittleToHostInt32(x) #define TRANSMIT_QUEUE_SIZE 256 #define MAX_BLOCK_SIZE PAGE_SIZE diff --git a/HoRNDIS_PPC.xcodeproj/TemplateIcon.tiff b/HoRNDIS_PPC.xcodeproj/TemplateIcon.tiff new file mode 100644 index 0000000000000000000000000000000000000000..82326a6c87c353e2999689b516472edb622dfdf2 GIT binary patch literal 3068 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 literal 0 HcmV?d00001 diff --git a/HoRNDIS_PPC.xcodeproj/project.pbxproj b/HoRNDIS_PPC.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8a3e3ec --- /dev/null +++ b/HoRNDIS_PPC.xcodeproj/project.pbxproj @@ -0,0 +1,327 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 32D94FC80562CBF700B6AF17 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; + 828A6EDC1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 828A6EDB1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch */; }; + 82DA41821A0A1891003FB1C5 /* HoRNDIS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82DA41801A0A1890003FB1C5 /* HoRNDIS.cpp */; }; + 82DA41831A0A1891003FB1C5 /* HoRNDIS.h in Headers */ = {isa = PBXBuildFile; fileRef = 82DA41811A0A1891003FB1C5 /* HoRNDIS.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 32D94FCF0562CBF700B6AF17 /* HoRNDIS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HoRNDIS-Info.plist"; sourceTree = ""; }; + 32D94FD00562CBF700B6AF17 /* HoRNDIS_PPC.kext */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HoRNDIS_PPC.kext; sourceTree = BUILT_PRODUCTS_DIR; }; + 828A6EDB1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "HoRNDIS-Prefix.pch"; sourceTree = ""; }; + 828A72C21A0FCA2900DB9BA7 /* InfoPlist.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = InfoPlist.strings; sourceTree = ""; }; + 82DA41801A0A1890003FB1C5 /* HoRNDIS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HoRNDIS.cpp; sourceTree = ""; }; + 82DA41811A0A1891003FB1C5 /* HoRNDIS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HoRNDIS.h; sourceTree = ""; }; + 8DA8362C06AD9B9200E5AC22 /* Kernel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kernel.framework; path = /System/Library/Frameworks/Kernel.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 32D94FCB0562CBF700B6AF17 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* HoRNDIS_PPC */ = { + isa = PBXGroup; + children = ( + 247142CAFF3F8F9811CA285C /* HoRNDIS */, + 828A6EE21A0FC60500DB9BA7 /* Frameworks */, + 19C28FB6FE9D52B211CA2CBB /* Products */, + ); + name = HoRNDIS_PPC; + sourceTree = ""; + }; + 19C28FB6FE9D52B211CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 32D94FD00562CBF700B6AF17 /* HoRNDIS_PPC.kext */, + ); + name = Products; + sourceTree = ""; + }; + 247142CAFF3F8F9811CA285C /* HoRNDIS */ = { + isa = PBXGroup; + children = ( + 82DA41801A0A1890003FB1C5 /* HoRNDIS.cpp */, + 82DA41811A0A1891003FB1C5 /* HoRNDIS.h */, + 828A6EAB1A0FC5C700DB9BA7 /* Supporting Files */, + ); + name = HoRNDIS; + sourceTree = ""; + }; + 828A6EAB1A0FC5C700DB9BA7 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 32D94FCF0562CBF700B6AF17 /* HoRNDIS-Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, + 828A6EDB1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 828A6EE21A0FC60500DB9BA7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 828A6EE31A0FC60E00DB9BA7 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 828A6EE31A0FC60E00DB9BA7 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 8DA8362C06AD9B9200E5AC22 /* Kernel.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 32D94FC50562CBF700B6AF17 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 82DA41831A0A1891003FB1C5 /* HoRNDIS.h in Headers */, + 828A6EDC1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 32D94FC30562CBF700B6AF17 /* HoRNDIS_PPC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB91D908733DB10010E9CD /* Build configuration list for PBXNativeTarget "HoRNDIS_PPC" */; + buildPhases = ( + 32D94FC50562CBF700B6AF17 /* Headers */, + 32D94FC70562CBF700B6AF17 /* Resources */, + 32D94FC90562CBF700B6AF17 /* Sources */, + 32D94FCB0562CBF700B6AF17 /* Frameworks */, + 32D94FCC0562CBF700B6AF17 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HoRNDIS_PPC; + productInstallPath = "$(SYSTEM_LIBRARY_DIR)/Extensions"; + productName = HoRNDIS_PPC; + productReference = 32D94FD00562CBF700B6AF17 /* HoRNDIS_PPC.kext */; + productType = "com.apple.product-type.kernel-extension.iokit"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB91DD08733DB10010E9CD /* Build configuration list for PBXProject "HoRNDIS_PPC" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + en, + ); + mainGroup = 089C166AFE841209C02AAC07 /* HoRNDIS_PPC */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 32D94FC30562CBF700B6AF17 /* HoRNDIS_PPC */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 32D94FC70562CBF700B6AF17 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 32D94FC80562CBF700B6AF17 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 32D94FCC0562CBF700B6AF17 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 32D94FC90562CBF700B6AF17 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 82DA41821A0A1891003FB1C5 /* HoRNDIS.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 828A72C21A0FCA2900DB9BA7 /* InfoPlist.strings */, + ); + name = InfoPlist.strings; + path = en.lproj; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DEB91DA08733DB10010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.0.0d1; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G4; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INFOPLIST_PREPROCESS = YES; + INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Extensions"; + MODULE_NAME = com.yourcompany.driver.HoRNDIS_PPC; + MODULE_VERSION = 1.0.0d1; + PRODUCT_NAME = HoRNDIS_PPC; + WRAPPER_EXTENSION = kext; + }; + name = Debug; + }; + 1DEB91DB08733DB10010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CURRENT_PROJECT_VERSION = 1.0.0d1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G4; + INFOPLIST_FILE = Info.plist; + INFOPLIST_PREPROCESS = YES; + INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Extensions"; + MODULE_NAME = com.yourcompany.driver.HoRNDIS_PPC; + MODULE_VERSION = 1.0.0d1; + PRODUCT_NAME = HoRNDIS_PPC; + WRAPPER_EXTENSION = kext; + }; + name = Release; + }; + 1DEB91DE08733DB10010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.0.0d1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DEBUGGING_SYMBOLS = full; + GCC_ENABLE_KERNEL_DEVELOPMENT = YES; + GCC_MODEL_TUNING = G4; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HoRNDIS-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_THREADSAFE_STATICS = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "HoRNDIS-Info.plist"; + INSTALL_MODE_FLAG = "u+rwx,g-rwx,a-rwx"; + MODULE_NAME = com.joshuawise.HoRNDIS; + MODULE_VERSION = 6; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-O"; + PREBINDING = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx10.5; + STRIP_INSTALLED_PRODUCT = NO; + WRAPPER_EXTENSION = kext; + }; + name = Debug; + }; + 1DEB91DF08733DB10010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1.0.0d1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_KERNEL_DEVELOPMENT = YES; + GCC_MODEL_TUNING = G4; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HoRNDIS-Prefix.pch"; + GCC_THREADSAFE_STATICS = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "HoRNDIS-Info.plist"; + INSTALL_MODE_FLAG = "u+rwx,g-rwx,a-rwx"; + MODULE_NAME = com.joshuawise.HoRNDIS; + MODULE_VERSION = 6; + OTHER_CFLAGS = "-O"; + PREBINDING = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx10.5; + WRAPPER_EXTENSION = kext; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB91D908733DB10010E9CD /* Build configuration list for PBXNativeTarget "HoRNDIS_PPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91DA08733DB10010E9CD /* Debug */, + 1DEB91DB08733DB10010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB91DD08733DB10010E9CD /* Build configuration list for PBXProject "HoRNDIS_PPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91DE08733DB10010E9CD /* Debug */, + 1DEB91DF08733DB10010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} From 9f2dc2c23bf860b88b1ff993269deb705b59f32d Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sun, 16 Nov 2014 16:46:22 +0100 Subject: [PATCH 02/11] Added: Useful script to load built kexts. --- build/Debug/test_kext.command | 58 +++++++++++++++++++++++++++++++++ build/Release/test_kext.command | 58 +++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100755 build/Debug/test_kext.command create mode 100755 build/Release/test_kext.command diff --git a/build/Debug/test_kext.command b/build/Debug/test_kext.command new file mode 100755 index 0000000..4ad18e6 --- /dev/null +++ b/build/Debug/test_kext.command @@ -0,0 +1,58 @@ +#!/bin/bash + +# Variables +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )";SOURCE="$(readlink "$SOURCE")";[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"; done +CURDIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + +DESTDIR="/tmp/HoRNDIS"; + + +# Get sudo +if [ -z $(sudo echo "gotsudo") ]; then echo "Could not get super-user permissions"; exit -1; fi + + +# Copy KEXT to tmp +echo "Copying..."; + +if [ -d $DESTDIR ]; then sudo rm -r $DESTDIR; fi +sudo mkdir $DESTDIR; +sudo cp -r $CURDIR/HoRNDIS* $DESTDIR/; #Copies all files beginning with HoRNDIS… +sudo chmod -R 0700 $DESTDIR; +sudo chown -R root:wheel $DESTDIR; + +# Load KEXT + +KEXTFILES=(); +while read -r -d $'\0'; do KEXTFILES+=("$REPLY"); done < <(sudo find $DESTDIR -iname "*.kext" -maxdepth 1 -print0); +if [ ${#KEXTFILES[@]} -gt 1 ]; then + # Ask user which kext to take + NUM_KEXTS=${#KEXTFILES[@]}; + + for (( i=0; i < $NUM_KEXTS; i++ )); do + echo "$i: ${KEXTFILES[$i]}"; + done + + KEXTNUM=-1; + while [ $KEXTNUM -lt 0 ] || [ $KEXTNUM -ge $NUM_KEXTS ]; do read -p "Which file?: " KEXTNUM; done + + # Got file + KEXTFILE=${KEXTFILES[$KEXTNUM]}; +else + KEXTFILE=${KEXTFILES[0]}; +fi + +if [ -n "$KEXTFILE" ]; then + # Load KEXT if found + echo "Loading \"$KEXTFILE\"..."; + sudo kextload -t "$KEXTFILE"; + + echo "Loaded:"; + echo $(kextstat | grep HoRNDIS); + + exit 0; +else + # No KEXT found + echo 'No KEXTFILE found.'; + exit 1; +fi diff --git a/build/Release/test_kext.command b/build/Release/test_kext.command new file mode 100755 index 0000000..4ad18e6 --- /dev/null +++ b/build/Release/test_kext.command @@ -0,0 +1,58 @@ +#!/bin/bash + +# Variables +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )";SOURCE="$(readlink "$SOURCE")";[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"; done +CURDIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + +DESTDIR="/tmp/HoRNDIS"; + + +# Get sudo +if [ -z $(sudo echo "gotsudo") ]; then echo "Could not get super-user permissions"; exit -1; fi + + +# Copy KEXT to tmp +echo "Copying..."; + +if [ -d $DESTDIR ]; then sudo rm -r $DESTDIR; fi +sudo mkdir $DESTDIR; +sudo cp -r $CURDIR/HoRNDIS* $DESTDIR/; #Copies all files beginning with HoRNDIS… +sudo chmod -R 0700 $DESTDIR; +sudo chown -R root:wheel $DESTDIR; + +# Load KEXT + +KEXTFILES=(); +while read -r -d $'\0'; do KEXTFILES+=("$REPLY"); done < <(sudo find $DESTDIR -iname "*.kext" -maxdepth 1 -print0); +if [ ${#KEXTFILES[@]} -gt 1 ]; then + # Ask user which kext to take + NUM_KEXTS=${#KEXTFILES[@]}; + + for (( i=0; i < $NUM_KEXTS; i++ )); do + echo "$i: ${KEXTFILES[$i]}"; + done + + KEXTNUM=-1; + while [ $KEXTNUM -lt 0 ] || [ $KEXTNUM -ge $NUM_KEXTS ]; do read -p "Which file?: " KEXTNUM; done + + # Got file + KEXTFILE=${KEXTFILES[$KEXTNUM]}; +else + KEXTFILE=${KEXTFILES[0]}; +fi + +if [ -n "$KEXTFILE" ]; then + # Load KEXT if found + echo "Loading \"$KEXTFILE\"..."; + sudo kextload -t "$KEXTFILE"; + + echo "Loaded:"; + echo $(kextstat | grep HoRNDIS); + + exit 0; +else + # No KEXT found + echo 'No KEXTFILE found.'; + exit 1; +fi From 7588d5ec3db2d9245942a738ab8887e7e2bc4e56 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sun, 16 Nov 2014 16:48:03 +0100 Subject: [PATCH 03/11] Added: Proper .gitignore. --- .gitignore | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c079a44 --- /dev/null +++ b/.gitignore @@ -0,0 +1,66 @@ +# Created by https://www.gitignore.io + +### Xcode ### +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.xcuserstate + + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Resource Forks +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### C++ ### +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib From 1d8ba3430cb061f792b2e59afca0cf141875aea6 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sun, 16 Nov 2014 17:40:26 +0100 Subject: [PATCH 04/11] Added: Build target to adjust version based on latest git tag --- HoRNDIS-Info.plist | 4 +- HoRNDIS_PPC.xcodeproj/project.pbxproj | 85 ++++++++++++++++++++++++--- 2 files changed, 79 insertions(+), 10 deletions(-) diff --git a/HoRNDIS-Info.plist b/HoRNDIS-Info.plist index 31e878e..d8d61e7 100644 --- a/HoRNDIS-Info.plist +++ b/HoRNDIS-Info.plist @@ -19,11 +19,11 @@ CFBundlePackageType KEXT CFBundleShortVersionString - 6 + GIT_VERSION CFBundleSignature ???? CFBundleVersion - 6 + APP_VERSION IOKitPersonalities HoRNDISComposite_SGS2 diff --git a/HoRNDIS_PPC.xcodeproj/project.pbxproj b/HoRNDIS_PPC.xcodeproj/project.pbxproj index 8a3e3ec..4c2113a 100644 --- a/HoRNDIS_PPC.xcodeproj/project.pbxproj +++ b/HoRNDIS_PPC.xcodeproj/project.pbxproj @@ -6,6 +6,20 @@ objectVersion = 45; objects = { +/* Begin PBXAggregateTarget section */ + 82F186B91A18D183003042FD /* GenGitVersion */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 82F186BE1A18D1A1003042FD /* Build configuration list for PBXAggregateTarget "GenGitVersion" */; + buildPhases = ( + 82F186B81A18D183003042FD /* ShellScript */, + ); + dependencies = ( + ); + name = GenGitVersion; + productName = GenGitVersion; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ 32D94FC80562CBF700B6AF17 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; 828A6EDC1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 828A6EDB1A0FC5F100DB9BA7 /* HoRNDIS-Prefix.pch */; }; @@ -143,6 +157,7 @@ projectRoot = ""; targets = ( 32D94FC30562CBF700B6AF17 /* HoRNDIS_PPC */, + 82F186B91A18D183003042FD /* GenGitVersion */, ); }; /* End PBXProject section */ @@ -168,6 +183,22 @@ }; /* End PBXRezBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 82F186B81A18D183003042FD /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "PATH=$PATH:/opt/local/bin # Use /opt/local (MacPorts) as fallback\n\n# Look for git\ngit=$(which git)\nif [ -z $git ]; then echo \"Cannot find git on this system\"; exit 1; fi\n\n# Touch Info.plist\nif [ -e HoRNDIS-Info.plist ]; then touch HoRNDIS-Info.plist; fi\nif [ -e Info.plist ]; then touch Info.plist; fi\n\n# Find latest git version\nversion=`$git describe --dirty`\nversion=`echo $version | sed 's/[a-zA-Z]*//'`\nversionNum=`echo $version | sed 's/\\-[0-9]*\\-[a-zA-Z0-9]*//' | sed 's/-dirty//'`\n\n# Write macros\necho \"#define GIT_VERSION $version\" > InfoPlist.h\necho \"#define APP_VERSION $versionNum\" >> InfoPlist.h"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 32D94FC90562CBF700B6AF17 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -256,16 +287,19 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "HoRNDIS-Info.plist"; + INFOPLIST_PREFIX_HEADER = InfoPlist.h; + INFOPLIST_PREPROCESS = YES; INSTALL_MODE_FLAG = "u+rwx,g-rwx,a-rwx"; - MODULE_NAME = com.joshuawise.HoRNDIS; - MODULE_VERSION = 6; + MACH_O_TYPE = mh_execute; + MODULE_NAME = com.joshuawise.kexts.HoRNDIS; + MODULE_VERSION = 1.0.0d1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-O"; - PREBINDING = NO; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx10.5; + SDKROOT = macosx10.4; STRIP_INSTALLED_PRODUCT = NO; WRAPPER_EXTENSION = kext; + ZERO_LINK = NO; }; name = Debug; }; @@ -277,6 +311,7 @@ COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1.0.0d1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_AUTO_VECTORIZATION = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_KERNEL_DEVELOPMENT = YES; GCC_MODEL_TUNING = G4; @@ -289,14 +324,39 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = "HoRNDIS-Info.plist"; + INFOPLIST_PREFIX_HEADER = InfoPlist.h; + INFOPLIST_PREPROCESS = YES; INSTALL_MODE_FLAG = "u+rwx,g-rwx,a-rwx"; - MODULE_NAME = com.joshuawise.HoRNDIS; - MODULE_VERSION = 6; + MACH_O_TYPE = mh_execute; + MODULE_NAME = com.joshuawise.kexts.HoRNDIS; + MODULE_VERSION = 1.0.0d1; OTHER_CFLAGS = "-O"; - PREBINDING = NO; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx10.5; + SDKROOT = macosx10.4; WRAPPER_EXTENSION = kext; + ZERO_LINK = NO; + }; + name = Release; + }; + 82F186BA1A18D184003042FD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = GenGitVersion; + ZERO_LINK = NO; + }; + name = Debug; + }; + 82F186BB1A18D184003042FD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = GenGitVersion; + ZERO_LINK = NO; }; name = Release; }; @@ -321,6 +381,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 82F186BE1A18D1A1003042FD /* Build configuration list for PBXAggregateTarget "GenGitVersion" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 82F186BA1A18D184003042FD /* Debug */, + 82F186BB1A18D184003042FD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 089C1669FE841209C02AAC07 /* Project object */; From 78efd48313d01168b5974657c95816cb3f4d4888 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sun, 16 Nov 2014 17:57:40 +0100 Subject: [PATCH 05/11] Updated: PackageMaker file for PowerPC version --- package/HoRNDIS.pmdoc/01horndis-contents.xml | 2 +- package/HoRNDIS.pmdoc/01horndis.xml | 2 +- package/HoRNDIS.pmdoc/02horndis-contents.xml | 1 + package/HoRNDIS.pmdoc/02horndis.xml | 1 + package/HoRNDIS.pmdoc/index.xml | 2 +- package/intro-text.rtf | 14 +++++------ package/post-readme.rtf | 19 +++++++------- package/resources/intro-text.rtf | 22 ----------------- package/resources/post-readme.rtf | 26 -------------------- 9 files changed, 22 insertions(+), 67 deletions(-) create mode 100644 package/HoRNDIS.pmdoc/02horndis-contents.xml create mode 100644 package/HoRNDIS.pmdoc/02horndis.xml delete mode 100644 package/resources/intro-text.rtf delete mode 100644 package/resources/post-readme.rtf diff --git a/package/HoRNDIS.pmdoc/01horndis-contents.xml b/package/HoRNDIS.pmdoc/01horndis-contents.xml index c861d23..d53cbf8 100644 --- a/package/HoRNDIS.pmdoc/01horndis-contents.xml +++ b/package/HoRNDIS.pmdoc/01horndis-contents.xml @@ -1 +1 @@ -mode \ No newline at end of file +groupmodeowner \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/01horndis.xml b/package/HoRNDIS.pmdoc/01horndis.xml index 5f5fc8f..3c927e7 100644 --- a/package/HoRNDIS.pmdoc/01horndis.xml +++ b/package/HoRNDIS.pmdoc/01horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionsinstallFrom.isRelativeTypelocationTypeidentifierparentinstallFrom.path01horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentscripts.postinstall.isRelativeTypeinstallFrom.isRelativeTypeinstallFrom.pathidentifier01horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/02horndis-contents.xml b/package/HoRNDIS.pmdoc/02horndis-contents.xml new file mode 100644 index 0000000..9e1e221 --- /dev/null +++ b/package/HoRNDIS.pmdoc/02horndis-contents.xml @@ -0,0 +1 @@ +modemodemodemodemodemodegroupmodeowner \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/02horndis.xml b/package/HoRNDIS.pmdoc/02horndis.xml new file mode 100644 index 0000000..12e9b3a --- /dev/null +++ b/package/HoRNDIS.pmdoc/02horndis.xml @@ -0,0 +1 @@ +com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo02horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/index.xml b/package/HoRNDIS.pmdoc/index.xml index c6dac76..09834ea 100644 --- a/package/HoRNDIS.pmdoc/index.xml +++ b/package/HoRNDIS.pmdoc/index.xml @@ -1 +1 @@ -HoRNDIS/Users/joshua/projects/horndis/HoRNDIS/HoRNDIS-rel3.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfintro-text.rtfpost-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIScomponent01horndis.xmldescriptionproperties.titleproperties.systemDomainproperties.userDomainpostinstallActions.actionsextraFilesproperties.customizeOptionproperties.anywhereDomain \ No newline at end of file +HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfintro-text.rtfpost-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/intro-text.rtf b/package/intro-text.rtf index a7ef1d0..d6d15c5 100644 --- a/package/intro-text.rtf +++ b/package/intro-text.rtf @@ -1,19 +1,19 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 +{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;} -{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} \margl1440\margr1440\vieww10800\viewh8400\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\b\fs26 \cf0 HoRNDIS -\b0 is a kernel extension ("kext") that makes it possible to use your Android phone's built-in USB tethering support on your Mac OS X system. In order to use it, you will need:\ +\b0 is a kernel extension ("kext") that makes it possible to use your Android phone's built-in USB tethering support on your Mac. In order to use it, you will need:\ \ -\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural -\ls1\ilvl0\cf0 {\listtext \'95 }a Mac running OS X 10.6 or later (i.e., Snow Leopard, Lion, or Mountain Lion);\ +\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural +\ls1\ilvl0\cf0 {\listtext \'95 }a Mac running Mac OS X 10.4.11 or later (i.e., Tiger, Leopard, Snow Leopard, Lion, Mountain Lion, Mavericks, or Yosemite);\ {\listtext \'95 }an Android phone that supports USB tethering natively;\ {\listtext \'95 }and for the USB tethering feature on your phone to be enabled (either by your carrier, or through third-party firmware).\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \cf0 \ For support, please visit {\field{\*\fldinst{HYPERLINK "http://www.joshuawise.com/horndis"}}{\fldrslt http://www.joshuawise.com/horndis}}.\ \ diff --git a/package/post-readme.rtf b/package/post-readme.rtf index 5de81c6..968811d 100644 --- a/package/post-readme.rtf +++ b/package/post-readme.rtf @@ -1,26 +1,27 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 +{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;} -{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} \margl1440\margr1440\vieww10800\viewh8400\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\b\fs26 \cf0 HoRNDIS -\b0 installation is complete. Depending on your version of OS X, you may need to restart your Mac for the driver to be loaded.\ +\b0 installation is complete. Depending on your version of OS X, +\b you may need to restart your Mac +\b0 for the driver to be loaded.\ \ To get started using \b HoRNDIS \b0 , you will need to enable tethering on your phone. To do so:\ -\pard\tx220\tx687\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li658\fi-659\pardirnatural +\pard\tx220\tx687\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li658\fi-659\ql\qnatural\pardirnatural \ls1\ilvl0\cf0 {\listtext \'95 }Connect your phone to your computer.\ {\listtext \'95 }Enter the settings menu on your phone, and select 'More...', below 'Wi-Fi' and 'Bluetooth'.\ {\listtext \'95 }Select 'Hotspot settings'.\ {\listtext \'95 }Check the 'USB tethering' box.\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural -\cf0 (These instructions were developed on a Galaxy Nexus running Android 4.1; exact steps on your phone may vary.)\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural +\cf0 (These instructions were developed on an AOSP-based ROM on Android 4.x; exact steps on your phone may differ)\ \ Your Mac should subsequently detect the device, and connect to the Internet.\ \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural -\cf0 For further support, please visit {\field{\*\fldinst{HYPERLINK "http://www.joshuawise.com/horndis"}}{\fldrslt http://www.joshuawise.com/horndis}}.} \ No newline at end of file +For further support, please visit {\field{\*\fldinst{HYPERLINK "http://www.joshuawise.com/horndis"}}{\fldrslt http://www.joshuawise.com/horndis}}.} \ No newline at end of file diff --git a/package/resources/intro-text.rtf b/package/resources/intro-text.rtf deleted file mode 100644 index a7ef1d0..0000000 --- a/package/resources/intro-text.rtf +++ /dev/null @@ -1,22 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 LucidaGrande;} -{\colortbl;\red255\green255\blue255;} -{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} -\margl1440\margr1440\vieww10800\viewh8400\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural - -\f0\b\fs26 \cf0 HoRNDIS -\b0 is a kernel extension ("kext") that makes it possible to use your Android phone's built-in USB tethering support on your Mac OS X system. In order to use it, you will need:\ -\ -\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural -\ls1\ilvl0\cf0 {\listtext \'95 }a Mac running OS X 10.6 or later (i.e., Snow Leopard, Lion, or Mountain Lion);\ -{\listtext \'95 }an Android phone that supports USB tethering natively;\ -{\listtext \'95 }and for the USB tethering feature on your phone to be enabled (either by your carrier, or through third-party firmware).\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural -\cf0 \ -For support, please visit {\field{\*\fldinst{HYPERLINK "http://www.joshuawise.com/horndis"}}{\fldrslt http://www.joshuawise.com/horndis}}.\ -\ -You will be guided through the steps necessary to install -\b HoRNDIS -\b0 on your Mac.} \ No newline at end of file diff --git a/package/resources/post-readme.rtf b/package/resources/post-readme.rtf deleted file mode 100644 index 5de81c6..0000000 --- a/package/resources/post-readme.rtf +++ /dev/null @@ -1,26 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 LucidaGrande;} -{\colortbl;\red255\green255\blue255;} -{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} -\margl1440\margr1440\vieww10800\viewh8400\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural - -\f0\b\fs26 \cf0 HoRNDIS -\b0 installation is complete. Depending on your version of OS X, you may need to restart your Mac for the driver to be loaded.\ -\ -To get started using -\b HoRNDIS -\b0 , you will need to enable tethering on your phone. To do so:\ -\pard\tx220\tx687\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li658\fi-659\pardirnatural -\ls1\ilvl0\cf0 {\listtext \'95 }Connect your phone to your computer.\ -{\listtext \'95 }Enter the settings menu on your phone, and select 'More...', below 'Wi-Fi' and 'Bluetooth'.\ -{\listtext \'95 }Select 'Hotspot settings'.\ -{\listtext \'95 }Check the 'USB tethering' box.\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural -\cf0 (These instructions were developed on a Galaxy Nexus running Android 4.1; exact steps on your phone may vary.)\ -\ -Your Mac should subsequently detect the device, and connect to the Internet.\ -\ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural -\cf0 For further support, please visit {\field{\*\fldinst{HYPERLINK "http://www.joshuawise.com/horndis"}}{\fldrslt http://www.joshuawise.com/horndis}}.} \ No newline at end of file From ffc53dc38eb3bbf21fee1d50af18e1325fb26dbb Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sun, 16 Nov 2014 17:59:42 +0100 Subject: [PATCH 06/11] squash! Added: Proper .gitignore. Added InfoPlist.h to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c079a44..fa937a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +InfoPlist.h + # Created by https://www.gitignore.io ### Xcode ### From 3b4c61cbaf56297f22c7c56a34d50ad6d3eb1f45 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Mon, 17 Nov 2014 19:57:36 +0100 Subject: [PATCH 07/11] Tried to fix some of the "installer madness". - Resources are back. - There are three PackageMaker files now. --- package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml | 1 + .../02horndis.xml => HoRNDIS (Tiger).pmdoc/01horndis.xml} | 2 +- package/HoRNDIS (Tiger).pmdoc/index.xml | 1 + package/HoRNDIS (Universal).pmdoc/01horndis-contents.xml | 1 + package/HoRNDIS (Universal).pmdoc/01horndis.xml | 1 + package/HoRNDIS (Universal).pmdoc/02horndis-contents.xml | 1 + package/HoRNDIS (Universal).pmdoc/02horndis.xml | 1 + package/HoRNDIS (Universal).pmdoc/index.xml | 1 + package/HoRNDIS.pmdoc/01horndis-contents.xml | 2 +- package/HoRNDIS.pmdoc/01horndis.xml | 2 +- package/HoRNDIS.pmdoc/02horndis-contents.xml | 1 - package/HoRNDIS.pmdoc/index.xml | 2 +- package/{ => resources}/intro-text.rtf | 0 package/{ => resources}/post-readme.rtf | 0 14 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml rename package/{HoRNDIS.pmdoc/02horndis.xml => HoRNDIS (Tiger).pmdoc/01horndis.xml} (93%) create mode 100644 package/HoRNDIS (Tiger).pmdoc/index.xml create mode 100644 package/HoRNDIS (Universal).pmdoc/01horndis-contents.xml create mode 100644 package/HoRNDIS (Universal).pmdoc/01horndis.xml create mode 100644 package/HoRNDIS (Universal).pmdoc/02horndis-contents.xml create mode 100644 package/HoRNDIS (Universal).pmdoc/02horndis.xml create mode 100644 package/HoRNDIS (Universal).pmdoc/index.xml delete mode 100644 package/HoRNDIS.pmdoc/02horndis-contents.xml rename package/{ => resources}/intro-text.rtf (100%) rename package/{ => resources}/post-readme.rtf (100%) diff --git a/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml b/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml new file mode 100644 index 0000000..226b532 --- /dev/null +++ b/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/02horndis.xml b/package/HoRNDIS (Tiger).pmdoc/01horndis.xml similarity index 93% rename from package/HoRNDIS.pmdoc/02horndis.xml rename to package/HoRNDIS (Tiger).pmdoc/01horndis.xml index 12e9b3a..ee8da9a 100644 --- a/package/HoRNDIS.pmdoc/02horndis.xml +++ b/package/HoRNDIS (Tiger).pmdoc/01horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo02horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo01horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS (Tiger).pmdoc/index.xml b/package/HoRNDIS (Tiger).pmdoc/index.xml new file mode 100644 index 0000000..9e2ad0f --- /dev/null +++ b/package/HoRNDIS (Tiger).pmdoc/index.xml @@ -0,0 +1 @@ +HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/01horndis-contents.xml b/package/HoRNDIS (Universal).pmdoc/01horndis-contents.xml new file mode 100644 index 0000000..bc1e5a7 --- /dev/null +++ b/package/HoRNDIS (Universal).pmdoc/01horndis-contents.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/01horndis.xml b/package/HoRNDIS (Universal).pmdoc/01horndis.xml new file mode 100644 index 0000000..7d783d6 --- /dev/null +++ b/package/HoRNDIS (Universal).pmdoc/01horndis.xml @@ -0,0 +1 @@ +com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentscripts.postinstall.isRelativeTypeinstallFrom.isRelativeTypeinstallFrom.pathidentifier \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/02horndis-contents.xml b/package/HoRNDIS (Universal).pmdoc/02horndis-contents.xml new file mode 100644 index 0000000..bc1e5a7 --- /dev/null +++ b/package/HoRNDIS (Universal).pmdoc/02horndis-contents.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/02horndis.xml b/package/HoRNDIS (Universal).pmdoc/02horndis.xml new file mode 100644 index 0000000..4232614 --- /dev/null +++ b/package/HoRNDIS (Universal).pmdoc/02horndis.xml @@ -0,0 +1 @@ +com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/index.xml b/package/HoRNDIS (Universal).pmdoc/index.xml new file mode 100644 index 0000000..ac0c2ab --- /dev/null +++ b/package/HoRNDIS (Universal).pmdoc/index.xml @@ -0,0 +1 @@ +HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/01horndis-contents.xml b/package/HoRNDIS.pmdoc/01horndis-contents.xml index d53cbf8..bc1e5a7 100644 --- a/package/HoRNDIS.pmdoc/01horndis-contents.xml +++ b/package/HoRNDIS.pmdoc/01horndis-contents.xml @@ -1 +1 @@ -groupmodeowner \ No newline at end of file + \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/01horndis.xml b/package/HoRNDIS.pmdoc/01horndis.xml index 3c927e7..0b612c8 100644 --- a/package/HoRNDIS.pmdoc/01horndis.xml +++ b/package/HoRNDIS.pmdoc/01horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentscripts.postinstall.isRelativeTypeinstallFrom.isRelativeTypeinstallFrom.pathidentifier01horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentinstallFrom.isRelativeTypeinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/02horndis-contents.xml b/package/HoRNDIS.pmdoc/02horndis-contents.xml deleted file mode 100644 index 9e1e221..0000000 --- a/package/HoRNDIS.pmdoc/02horndis-contents.xml +++ /dev/null @@ -1 +0,0 @@ -modemodemodemodemodemodegroupmodeowner \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/index.xml b/package/HoRNDIS.pmdoc/index.xml index 09834ea..dfa3763 100644 --- a/package/HoRNDIS.pmdoc/index.xml +++ b/package/HoRNDIS.pmdoc/index.xml @@ -1 +1 @@ -HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfintro-text.rtfpost-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDIS/Users/joshua/projects/horndis/HoRNDIS/HoRNDIS.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIS.pkg.horndiskextcomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/intro-text.rtf b/package/resources/intro-text.rtf similarity index 100% rename from package/intro-text.rtf rename to package/resources/intro-text.rtf diff --git a/package/post-readme.rtf b/package/resources/post-readme.rtf similarity index 100% rename from package/post-readme.rtf rename to package/resources/post-readme.rtf From d2de3454fb80aab63cadab6d59db87fbd2731d3a Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Mon, 17 Nov 2014 21:33:07 +0100 Subject: [PATCH 08/11] Fixed paths in PackageMaker files to be all relative. \o/ --- package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml | 2 +- package/HoRNDIS (Tiger).pmdoc/01horndis.xml | 2 +- package/HoRNDIS (Tiger).pmdoc/index.xml | 2 +- package/HoRNDIS (Universal).pmdoc/02horndis.xml | 2 +- package/HoRNDIS (Universal).pmdoc/index.xml | 2 +- package/HoRNDIS.pmdoc/01horndis.xml | 2 +- package/HoRNDIS.pmdoc/index.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml b/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml index 226b532..bc1e5a7 100644 --- a/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml +++ b/package/HoRNDIS (Tiger).pmdoc/01horndis-contents.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/package/HoRNDIS (Tiger).pmdoc/01horndis.xml b/package/HoRNDIS (Tiger).pmdoc/01horndis.xml index ee8da9a..d3733eb 100644 --- a/package/HoRNDIS (Tiger).pmdoc/01horndis.xml +++ b/package/HoRNDIS (Tiger).pmdoc/01horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo01horndis-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS (Tiger).pmdoc/index.xml b/package/HoRNDIS (Tiger).pmdoc/index.xml index 9e2ad0f..ab39ca4 100644 --- a/package/HoRNDIS (Tiger).pmdoc/index.xml +++ b/package/HoRNDIS (Tiger).pmdoc/index.xml @@ -1 +1 @@ -HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/02horndis.xml b/package/HoRNDIS (Universal).pmdoc/02horndis.xml index 4232614..d3733eb 100644 --- a/package/HoRNDIS (Universal).pmdoc/02horndis.xml +++ b/package/HoRNDIS (Universal).pmdoc/02horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS_PPC.pkg1.0../build/Release/HoRNDIS_PPC.kext/System/Library/Extensionsparentscripts.postinstall.pathscripts.postinstall.isRelativeTypeversionincludeRootinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/index.xml b/package/HoRNDIS (Universal).pmdoc/index.xml index ac0c2ab..eea168d 100644 --- a/package/HoRNDIS (Universal).pmdoc/index.xml +++ b/package/HoRNDIS (Universal).pmdoc/index.xml @@ -1 +1 @@ -HoRNDIS/Users/takashiyoshi/Development/HoRNDIS/package/HoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/01horndis.xml b/package/HoRNDIS.pmdoc/01horndis.xml index 0b612c8..63d899d 100644 --- a/package/HoRNDIS.pmdoc/01horndis.xml +++ b/package/HoRNDIS.pmdoc/01horndis.xml @@ -1 +1 @@ -com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentinstallFrom.isRelativeTypeinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file +com.joshuawise.kexts.HoRNDIS.pkg1.0../build/Release/HoRNDIS.kext/System/Library/ExtensionslocationTypeparentinstallFrom.isRelativeTypeinstallFrom.pathidentifierinstallTo/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/index.xml b/package/HoRNDIS.pmdoc/index.xml index dfa3763..dce001b 100644 --- a/package/HoRNDIS.pmdoc/index.xml +++ b/package/HoRNDIS.pmdoc/index.xml @@ -1 +1 @@ -HoRNDIS/Users/joshua/projects/horndis/HoRNDIS/HoRNDIS.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIS.pkg.horndiskextcomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIS.pkg.horndiskextcomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file From e754a5b02261c975f191c8f1c109df6ed9f0f7c5 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sat, 22 Nov 2014 20:38:10 +0100 Subject: [PATCH 09/11] Refined README.md --- README.md | 19 ++++++++++++++++++- docs/images/readme-header.png | Bin 0 -> 24115 bytes 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 docs/images/readme-header.png diff --git a/README.md b/README.md index db9a4d9..07724cc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ +![HoRNDIS](docs/images/readme-header.png) + **HoRNDIS** (pronounce: *"horrendous"*) is a driver for Mac OS X that allows you to use your Android phone's native [USB tethering](http://en.wikipedia.org/wiki/Tethering) mode to get Internet access. -For more information, [visit the home page for HoRNDIS on my site](http://www.joshuawise.com/horndis). \ No newline at end of file +For more information, [visit the home page for HoRNDIS](http://www.joshuawise.com/horndis). + +## Build +Simply running `xcodebuild` in the checkout directory should be sufficient to build the kext. +(see below for which project to use). + +*Please don't publish versions you built as if they were official!* + +**For Mac OS X 10.6 or higher** +If you wish to package it up, you can run make to assemble the package in the `build/` directory. +For development use the `HoRNDIS.xcodeproj` on Xcode 4.0 or higher. + +**For Mac OS X 10.5 or lower** +Don't use `make` if you want to build for 10.4 or 10.5. +Use the `HoRNDIS_PPC.xcodeproj` on Xcode 3.1.4 preferably. +To package your kext, use the PackageMaker files in the `package/` directory according to what you want to include. \ No newline at end of file diff --git a/docs/images/readme-header.png b/docs/images/readme-header.png new file mode 100644 index 0000000000000000000000000000000000000000..92997f752e1436d044ad77803de0792a595700dc GIT binary patch literal 24115 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%0A;*RV~YTWnbv1Ut;Y} zqGWh8iFI)Ds86cBL3$3x+h7)>=iZwWBqz|fy6)s5+}O7B%ZL}34EAnQO;g%J6E-q6 z?{sBM7v_H1MAb{s5|1m9%sAxY^aMUxx&U_B+tQKCK8bJ2(B6L0Y_t!svlPeX{x(&U2DxgpI=3msv2mFRNYG~wrckg61IaJz`?Rwxxst2{bBc50CeTRx%=}n@o za9#H+s-7&u=+++&AXMi6`Tb$ry4X;H4ZHf>s7{OzQ>+Tbi8tpR*M(vn)F!An#7tBB zSN3LqRyA^$W_bF9zgQUD6B}8Xadq+8dPf5rb$XaTCYr=5q5}=7uEP-7>7)}Y#IAp{ z-p6`i3ze6Ae8kt@5SR(t*WoWk%3I_)5WXIjEQ75go8CEmDRsfG;-~fwhezfMRcFZW z%O_8O6wj_EV8_sWnJ(~bY6m?f#z~~Nm@p78Dv)LCs3jWq zU%JIKy*E;W?CA-fXp-5U3ah?2CDceOK&|M8qqY3e+N{)7ymJ=tKYuwr3Gi^zd)hjY z)Grjo@-aA+-$BB)Y|!8tKJEY7#*i$`VYyIa^Fozr`o(UCQ#Sm5A*QxiEIZZdiR* z^xKKu6M2j2LZRYIf@%5x$SH~M^#3d-jz^jwbqFc9)KrIaIFmQo-&-3<`LKFHW%RJ` z{8@T_={ftd_k^CCTF%|AZ}Og{V}HOnQdab03#vI!L%cl;S}WgoPmX#y*h2{4_g})Wx1N z^{#jR6bj4iQUCqlki3EO(&%6R3;sUMB!PDNKcM}eVf+8%&;DQ12>)|DK$pN#q(r{z SN7OxiDjiKjjcPT=$NvRYtiYE5 literal 0 HcmV?d00001 From 03211d61647aa06a028eb7aaa8993d8af8553043 Mon Sep 17 00:00:00 2001 From: Takashi Yoshi Date: Sat, 22 Nov 2014 21:07:43 +0100 Subject: [PATCH 10/11] Added installer background image --- package/HoRNDIS (Tiger).pmdoc/index.xml | 2 +- package/HoRNDIS (Universal).pmdoc/index.xml | 2 +- package/HoRNDIS.pmdoc/index.xml | 2 +- package/resources/background.png | Bin 0 -> 4139 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 package/resources/background.png diff --git a/package/HoRNDIS (Tiger).pmdoc/index.xml b/package/HoRNDIS (Tiger).pmdoc/index.xml index ab39ca4..aea6018 100644 --- a/package/HoRNDIS (Tiger).pmdoc/index.xml +++ b/package/HoRNDIS (Tiger).pmdoc/index.xml @@ -1 +1 @@ -HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.resources/background.png../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS (Universal).pmdoc/index.xml b/package/HoRNDIS (Universal).pmdoc/index.xml index eea168d..dab838b 100644 --- a/package/HoRNDIS (Universal).pmdoc/index.xml +++ b/package/HoRNDIS (Universal).pmdoc/index.xml @@ -1 +1 @@ -HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.mpkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.resources/background.png../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Mac OS X 10.4.11 Tiger or greater.com.joshuawise.kexts.HoRNDIScomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xml02horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/HoRNDIS.pmdoc/index.xml b/package/HoRNDIS.pmdoc/index.xml index dce001b..ed4ef6a 100644 --- a/package/HoRNDIS.pmdoc/index.xml +++ b/package/HoRNDIS.pmdoc/index.xml @@ -1 +1 @@ -HoRNDISHoRNDIS.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIS.pkg.horndiskextcomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.systemDomainproperties.anywhereDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file +HoRNDISHoRNDIS.pkgcom.joshuawiseHoRNDIS is a kernel extension ("kext") that allows you to use your Android phone's built-in USB tethering support.resources/background.png../COPYING.rtfresources/intro-text.rtfresources/post-readme.rtfFailureHoRNDIS supports only Snow Leopard and newer systems.com.joshuawise.kexts.HoRNDIS.pkg.horndiskextcomponentcom.joshuawise.kexts.HoRNDIScomponent01horndis.xmlproperties.userDomainproperties.anywhereDomainproperties.systemDomainproperties.customizeOptionextraFilesproperties.titledescriptionpostinstallActions.actions \ No newline at end of file diff --git a/package/resources/background.png b/package/resources/background.png new file mode 100644 index 0000000000000000000000000000000000000000..35ed5de457b547c7f9f0f116e9978b1b5ce6e188 GIT binary patch literal 4139 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 literal 0 HcmV?d00001 From 5c006880e6fa59cacdd769fc90970efd240f22ab Mon Sep 17 00:00:00 2001 From: will Date: Tue, 27 Jan 2015 22:17:34 +0800 Subject: [PATCH 11/11] add common usage guide to README.md --- README.md | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 07724cc..a0ef15c 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@ For more information, [visit the home page for HoRNDIS](http://www.joshuawise.com/horndis). -## Build -Simply running `xcodebuild` in the checkout directory should be sufficient to build the kext. -(see below for which project to use). +## Building the source +* `git clone` the repository +* Simply running xcodebuild in the checkout directory should be sufficient to build the kext. (see below for which project to use). + *Please don't publish versions you built as if they were official!* + **For Mac OS X 10.6 or higher** If you wish to package it up, you can run make to assemble the package in the `build/` directory. For development use the `HoRNDIS.xcodeproj` on Xcode 4.0 or higher. @@ -17,4 +19,23 @@ For development use the `HoRNDIS.xcodeproj` on Xcode 4.0 or higher. **For Mac OS X 10.5 or lower** Don't use `make` if you want to build for 10.4 or 10.5. Use the `HoRNDIS_PPC.xcodeproj` on Xcode 3.1.4 preferably. -To package your kext, use the PackageMaker files in the `package/` directory according to what you want to include. \ No newline at end of file +To package your kext, use the PackageMaker files in the `package/` directory according to what you want to include. + + +[^download_footer]: To download the installation package, please [visit](http://www.joshuawise.com/horndis). +For binaries for Leopard and earlier, check the releases of this repo. + +## Installation + +* Get the installation package (Download[^download_footer] or [Build](#building-the-source) the installation package from source yourself) +* Run the installation package +* Assuming that the installation proceeds without errors, after it completes, connect your phone to your Mac by USB. +* Enter the settings menu on your phone. +* In the connections section, below Wi-Fi and Bluetooth, select “More...”. +Select “Tethering & portable hotspot”. +* Check the “USB tethering” box. It should flash once, and then become solidly checked. + +## Uninstallation + +* Delete the `HoRNDIS.kext` under `/System/Library/Extensions` and `/Library/Extensions` folder +* Restart your computer