Heimdall Kext For Os X

broken image


Kexts that don't specify a proper value for the OSBundleRequired info dictionary property will not be loaded. As of Mac OS X 10.5 (Leopard), kextd determines from the kernel whether the system has started in safe boot mode, so this flag is no longer necessary (but may be used for testing). See full list on glassechidna.com.au. Thanks to Kext Utility you can also update records of the unsigned installed kexts in the AppleKextExcludeList.kext file, pack kext files to mkext cache files and vice versa. In conclusion, Kext Utility is a quite practical and intuitive OS X utility for any user interested in hackintosh installations. Heimdall is a cross-platform tool that is used to flash firmware (ROMs) onto Samsung mobile devices. Heimdall is available for Windows, Mac OS, and Linux platforms. So, it can be used as Samsung's Odin alternative for macOS, and Linux. Here you can download Heimdall for macOS, Linux, and Windows. Mac OS X specific For Mac OS X the 1.1.0 version of Heimdall includes some nuked Qt binaries which means the GUI won't start. This can be fixed by afterwards installing Qt from here. The above should not apply to the latest Heimdall release anymore according to the release notes.

56,626 downloadsUpdated: February 6, 2016Donationware

A free Mac OS X equivalent of Odin, an utility for flashing firmware (ROMs) onto Samsung Galaxy mobile devices including tablets

Heimdall is an open source and cross platform utility that offers you the possibility to flash Samsung Galaxy devices. Keep in mind that flashing firmware to your mobile device is a potentially damaging practice, and that you will void your warranty, while possibly rendering your phone useless.

Effortless to install software solution for flashing Samsung Galaxy phones

The Heimdall software package comes with its own installer, so all you have to do is provide the admin password, and restart your computer when prompted. In addition, the archive also contains a ReadMe document that provides detailed installation and flashing instructions.

Thanks to its well organized, tabbed user interface, finding your way around the Heimdall application is fairly intuitive. You start by loading the source Heimdall Firmware Package, select the partition you want to flash, and then, after taking the appropriate security measures, simply start the procedure.

In addition, Heimdall comes with a command line version that enables you to flash your Samsung Galaxy's firmware via the Terminal application.

Flash your Samsung Galaxy device using Heimdall Firmware Packages

The Heimdall application flashes your mobile device using Heimdall Firmware Packages, which are essentially TAR archives that have been compressed using the GZIP format. These can be either downloaded online, or can be created with the app's GUI, in the Create Package tab.

Noteworthy is that each Heimdall Firmware Package supports certain devices, so after you load the package in the Heimdall app, you should check if the connected phone model is on the list if supported devices. In addition, if loaded properly, you should also be able to see the firmware name, version, and platform.

All in all, Heimdall is a viable solution for flashing the firmware of your Samsung Galaxy phone, but keep in mind that the procedures is not risk free: thoroughly read the included documentation before using the utility to change the firmware on your device.

Heimdall kext for os xml

However, keep in mind, just like any firmware flashing software, Heimdall has the potential to brick your device if not used correctly.

Heimdall kext for os xml

Also, if you're looking for the Windows version, tryOdin3 or Odin.

Filed under

Heimdall (Odin equivalent) was reviewed by Iulia Ivan
4.0/5
SYSTEM REQUIREMENTS
  • 64-bit processor
  • Samsung Galaxy device
Heimdall kext for os x latest
New in Heimdall (Odin equivalent) 1.4.0:
  • Heimdall:
  • Substantially improved support for Qualcomm based devices.
  • Added support for printing PIT files stored on your computer.
  • Added support for using partition names as arguments e.g. –HIDDEN, –KERNEL, –MOVINAND etc.
Read the full changelog This enables Disqus, Inc. to process some of your data. Disqus privacy policy

Heimdall (Odin equivalent) 1.4.1

add to watchlistsend us an update
runs on:
Mac OS X 10.8 or later (Intel only)
file size:
7.3 MB
filename:
heimdall-suite-1.4.0-mac.dmg
main category:
Utilities
developer:
visit homepage

top alternatives FREE

top alternatives PAID

Heimdall kext for os x 10

As discussed in the chapter Kernel Architecture Overview,OS X provides a kernel extension mechanism as a means of allowingdynamic loading of code into the kernel, without the need to recompileor relink. Because these kernel extensions (KEXTs) provide both modularityand dynamic loadability, they are a natural choice for any relatively self-containedservice that requires access to internal kernel interfaces.

Because KEXTs run in supervisor mode in the kernel'saddress space, they are also harder to write and debug than user-levelmodules, and must conform to strict guidelines. Further, kernelresources are wired(permanently resident in memory) and are thus more costly to usethan resources in a user-space task of equivalent functionality.

In addition, although memory protection keeps applicationsfrom crashing the system, no such safeguards are in place insidethe kernel. A badly behaved kernel extension in OS X can causeas much trouble as a badly behaved application or extension couldin Mac OS 9.

Bugs in KEXTs can have far more severe consequences than bugsin user-level code. For example, a memory access error in a userapplication can, at worst, cause that application to crash. In contrast,a memory access error in a KEXT causes a kernel panic, crashingthe operating system.

Finally, for security reasons, some customersrestrict or don't permit the use of third-party KEXTs. As a result,use of KEXTs is strongly discouraged in situations where user-level solutionsare feasible. OS X guarantees that threading in applications is just asefficient as threading inside the kernel, so efficiency should notbe an issue. Unless your application requires low-level access tokernel interfaces, you should use a higher level of abstraction whendeveloping code for OS X.

When you are trying to determine if a piece of code shouldbe a KEXT, the default answer is generally no.Even if your code was a system extension in Mac OS 9, that doesnot necessarily mean that it should be a kernel extension in OS X. There are only a few good reasons for a developer to writea kernel extension:

  • Your codeneeds to take a primary interrupt—that is, something in the (built-in) hardwareneeds to interrupt the CPU and execute a handler.

  • The primary client of your code is inside the kernel—forexample, a block device whose primary client is a file system.

  • Your code needs to access kernel interfaces that are not exportedto user space.

  • Your code has other special requirements that cannot be satisfiedin a user space application.

If your code does not meet any of the above criteria (andpossibly even if it does), you should consider developing it asa library or a user-level daemon, or using one of the user-levelplug-in architectures (such as QuickTimecomponents or the CoreGraphics framework) instead of writing a kernel extension.

If you are writing device drivers or code to support a newvolume format or networking protocol, however, KEXTs may be theonly feasible solution. Fortunately, while KEXTs may be more difficultto write than user-space code, several tools and procedures are availableto enhance the development and debugging process. See Debugging Your KEXT formore information.

This chapter provides a conceptual overview of KEXTs and howto create them. If you are interested in building a simple KEXT,see the Apple tutorials listed in the bibliography. These providestep-by-step instructions for creating a simple, generic KEXT ora basic I/O Kit driver.

Implementation of a KernelExtension (KEXT)

Kernel extensions are implemented asbundles,folders that the Finder treats as single files. See the chapterabout bundles in Mac Technology Overview for a discussion of bundles.The KEXTbundle can contain the following:

  • Informationproperty list—a text file that describes the contents,settings, and requirements of the KEXT. This file is required. AKEXT bundle need contain nothing more than this file, although mostKEXTs contain one or more kernel modules as well. See the chapterabout software configuration in Mac Technology Overview for further information about propertylists.

  • KEXT binary—a file in Mach-O format, containing the actualbinary code used by the KEXT. A KEXT binary (also known as a kernelmodule or KMOD)represents the minimum unit of code that can be loaded into thekernel. A KEXT usually contains one KEXT binary. If no KEXT binariesare included, the information property list file must contain areference to another KEXT and change its default settings.

  • Resources—for example, icons or localizationdictionaries. Resources are optional; they may be useful for a KEXTthat needs to display a dialog or menu. At present, no resourcesare explicitly defined for use with KEXTs.

  • KEXT bundles—a kext can contain otherKEXTs. This can be used for plug-ins that augment features of aKEXT.

Kernel Extension Dependencies

Any KEXT can declare that it is dependent upon any other KEXT. The developer lists these dependencies in the OSBundleLibraries dictionary in the module's property list file.

Before a KEXT is loaded, all of its requirements are checked.Those required extensions (and their requirements) are loaded first,iterating back through the lists until there are no more requiredextensions to load. Only after all requirements are met, is therequested KEXT loaded as well.

For example, device drivers (a type of KEXT) are dependentupon (require) certain families (another type of KEXT). When a driveris loaded, its required families are also loaded to provide necessary,common functionality. To ensure that all requirements are met, each devicedriver should list all of its requirements (families and other drivers)in its property list. See the chapter I/O Kit Overview, for an explanationof drivers and families.

It is important to list all dependencies for each KEXT. Ifyour KEXT fails to do so, your KEXT may not load due to unrecognizedsymbols, thus rendering the KEXT useless. Dependencies in KEXTscan be considered analogous to required header files or libraries incode development; in fact, the Kernel Extension Manageruses the standard linker to resolve KEXT requirements.

Heimdall Kext For Os X 10

Building and Testing Your Extension

After creating the necessary property list and C or C++ source files, you use Project Builder tobuild your KEXT. Any errors in the source code are brought to yourattention during the build and you are given the chance to edityour source files and try again.

To test your KEXT, however, you need to leave Project Builderand work in the Terminal application(or in console mode).In console mode, all system messages are written directly to yourscreen, as well as to a log file (/var/log/system.log).If you work in the Terminal application, you must view system messagesin the log file or in the Console application.You also need to login to the root account (or use the su or sudo command), sinceonly the root account can load kernel extensions.

When testing your KEXT, you can load and unload it manually,as well as check the load status. You can use the kextload commandto load any KEXT. A manual page for kextload isincluded in OS X. (On OS X prior to 10.2, you must use the kmodload command instead.)

Note that this command is useful only when developing a KEXT.Eventually, after it has been tested and debugged, you install yourKEXT in one of the standard places (see Installed KEXTs for details).Then, it will be loaded and unloaded automatically at system startupand shutdown or whenever it is needed (such as when a new deviceis detected).

Debugging Your KEXT

KEXT debuggingcan be complicated. Before you can debug a KEXT, you must firstenable kernel debugging, as OS X is not normally configuredto permit debugging the kernel. Only the root account can enablekernel debugging, and you need to reboot OS X for the changesto take effect. (You can use sudo to gainroot privileges if you don't want to enable a root password.)

Kernel debugging is performed using two OS X computers,called the development or debug host and the debug target. Thesecomputers must be connected over a reliable network connection onthe same subnet (or within a single local network). Specifically, theremust not be any intervening IP routers or other devices that couldmake hardware-based Ethernet addressing impossible.

The KEXT is registered (and loaded and run) on the target.The debugger is launched and run on the debug host. You can alsorebuild your KEXT on the debug host, after you fix any errors youfind.

Debugging must be performed in this fashion because you musttemporarily halt the kernel on the target in order to use the debugger.When you halt the kernel, all other processes on that computer stop.However, a debugger running remotely can continue to run and cancontinue to examine (or modify) the kernel on the target.

Heimdall Kext For Os X Download

Note that bugs in KEXTs may cause the target kernel to freezeor panic. If this happens, you may not be able to continue debugging,even over a remote connection; you have to reboot the target andstart over, setting a breakpoint just before the code where theKEXT crashed and working very carefully up to the crash point.

Developers generally debug KEXTs using gdb,a source-level debugger with a command-line interface. You willneed to work in the Terminal application to run gdb.For detailed information about using gdb,see the documentation included with OS X. You can also use the help commandfrom within gdb.

Some features of gdb areunavailable when debugging KEXTs because of implementation limitations.For example:

  • You can'tuse gdb to call a functionor method in a KEXT.

  • You should not use gdb todebug interrupt routines.

The former is largely a barrier introduced by the C++ language.The latter may work in some cases but is not recommended due tothe potential for gdb to interrupt something uponwhich kdp (the kernel shim used by gdb)depends in order to function properly.

Use care that you do not halt the kernel for too long whenyou are debugging (for example, when you set breakpoints). In ashort time, internal inconsistencies can appear that cause the targetkernel to panic or freeze, forcing you to reboot the target.

Additional information about debugging can be found in When Things Go Wrong: Debugging the Kernel.

Installed KEXTs

The Kernel Extension Manager (KEXT Manager) is responsiblefor loading and unloading all installed KEXTs (commands such as kextload areused only during development). Installed KEXTs are dynamically addedto the running OS X kernel as part of the kernel's addressspace. An installed and enabled KEXT is invoked as needed.

Important: Note that KEXTs are only wrappers (bundles) arounda property list, KEXT binaries (or references to other KEXTs), andoptional resources. The KEXT describes what is to be loaded; itis the KEXT binaries that are actually loaded.

KEXTs are usually installed in the folder /System/Libraries/Extensions.The Kernel Extension Manager (in the form of a daemon, kextd),always checks here. KEXTs can also be installed in ROM or insidean application bundle.

Installing KEXTs in an application bundle allows an applicationto register those KEXTs without the need to install them permanentlyelsewhere within the system hierarchy. This may be more convenientand allows the KEXT to be associated with a specific, running application.When it starts, the application can register the KEXT and, if desired,unregister it on exit.

Heimdall Kext For Os X

However, keep in mind, just like any firmware flashing software, Heimdall has the potential to brick your device if not used correctly.

Also, if you're looking for the Windows version, tryOdin3 or Odin.

Filed under

Heimdall (Odin equivalent) was reviewed by Iulia Ivan
4.0/5
SYSTEM REQUIREMENTS
  • 64-bit processor
  • Samsung Galaxy device
New in Heimdall (Odin equivalent) 1.4.0:
  • Heimdall:
  • Substantially improved support for Qualcomm based devices.
  • Added support for printing PIT files stored on your computer.
  • Added support for using partition names as arguments e.g. –HIDDEN, –KERNEL, –MOVINAND etc.
Read the full changelog This enables Disqus, Inc. to process some of your data. Disqus privacy policy

Heimdall (Odin equivalent) 1.4.1

add to watchlistsend us an update
runs on:
Mac OS X 10.8 or later (Intel only)
file size:
7.3 MB
filename:
heimdall-suite-1.4.0-mac.dmg
main category:
Utilities
developer:
visit homepage

top alternatives FREE

top alternatives PAID

As discussed in the chapter Kernel Architecture Overview,OS X provides a kernel extension mechanism as a means of allowingdynamic loading of code into the kernel, without the need to recompileor relink. Because these kernel extensions (KEXTs) provide both modularityand dynamic loadability, they are a natural choice for any relatively self-containedservice that requires access to internal kernel interfaces.

Because KEXTs run in supervisor mode in the kernel'saddress space, they are also harder to write and debug than user-levelmodules, and must conform to strict guidelines. Further, kernelresources are wired(permanently resident in memory) and are thus more costly to usethan resources in a user-space task of equivalent functionality.

In addition, although memory protection keeps applicationsfrom crashing the system, no such safeguards are in place insidethe kernel. A badly behaved kernel extension in OS X can causeas much trouble as a badly behaved application or extension couldin Mac OS 9.

Bugs in KEXTs can have far more severe consequences than bugsin user-level code. For example, a memory access error in a userapplication can, at worst, cause that application to crash. In contrast,a memory access error in a KEXT causes a kernel panic, crashingthe operating system.

Finally, for security reasons, some customersrestrict or don't permit the use of third-party KEXTs. As a result,use of KEXTs is strongly discouraged in situations where user-level solutionsare feasible. OS X guarantees that threading in applications is just asefficient as threading inside the kernel, so efficiency should notbe an issue. Unless your application requires low-level access tokernel interfaces, you should use a higher level of abstraction whendeveloping code for OS X.

When you are trying to determine if a piece of code shouldbe a KEXT, the default answer is generally no.Even if your code was a system extension in Mac OS 9, that doesnot necessarily mean that it should be a kernel extension in OS X. There are only a few good reasons for a developer to writea kernel extension:

  • Your codeneeds to take a primary interrupt—that is, something in the (built-in) hardwareneeds to interrupt the CPU and execute a handler.

  • The primary client of your code is inside the kernel—forexample, a block device whose primary client is a file system.

  • Your code needs to access kernel interfaces that are not exportedto user space.

  • Your code has other special requirements that cannot be satisfiedin a user space application.

If your code does not meet any of the above criteria (andpossibly even if it does), you should consider developing it asa library or a user-level daemon, or using one of the user-levelplug-in architectures (such as QuickTimecomponents or the CoreGraphics framework) instead of writing a kernel extension.

If you are writing device drivers or code to support a newvolume format or networking protocol, however, KEXTs may be theonly feasible solution. Fortunately, while KEXTs may be more difficultto write than user-space code, several tools and procedures are availableto enhance the development and debugging process. See Debugging Your KEXT formore information.

This chapter provides a conceptual overview of KEXTs and howto create them. If you are interested in building a simple KEXT,see the Apple tutorials listed in the bibliography. These providestep-by-step instructions for creating a simple, generic KEXT ora basic I/O Kit driver.

Implementation of a KernelExtension (KEXT)

Kernel extensions are implemented asbundles,folders that the Finder treats as single files. See the chapterabout bundles in Mac Technology Overview for a discussion of bundles.The KEXTbundle can contain the following:

  • Informationproperty list—a text file that describes the contents,settings, and requirements of the KEXT. This file is required. AKEXT bundle need contain nothing more than this file, although mostKEXTs contain one or more kernel modules as well. See the chapterabout software configuration in Mac Technology Overview for further information about propertylists.

  • KEXT binary—a file in Mach-O format, containing the actualbinary code used by the KEXT. A KEXT binary (also known as a kernelmodule or KMOD)represents the minimum unit of code that can be loaded into thekernel. A KEXT usually contains one KEXT binary. If no KEXT binariesare included, the information property list file must contain areference to another KEXT and change its default settings.

  • Resources—for example, icons or localizationdictionaries. Resources are optional; they may be useful for a KEXTthat needs to display a dialog or menu. At present, no resourcesare explicitly defined for use with KEXTs.

  • KEXT bundles—a kext can contain otherKEXTs. This can be used for plug-ins that augment features of aKEXT.

Kernel Extension Dependencies

Any KEXT can declare that it is dependent upon any other KEXT. The developer lists these dependencies in the OSBundleLibraries dictionary in the module's property list file.

Before a KEXT is loaded, all of its requirements are checked.Those required extensions (and their requirements) are loaded first,iterating back through the lists until there are no more requiredextensions to load. Only after all requirements are met, is therequested KEXT loaded as well.

For example, device drivers (a type of KEXT) are dependentupon (require) certain families (another type of KEXT). When a driveris loaded, its required families are also loaded to provide necessary,common functionality. To ensure that all requirements are met, each devicedriver should list all of its requirements (families and other drivers)in its property list. See the chapter I/O Kit Overview, for an explanationof drivers and families.

It is important to list all dependencies for each KEXT. Ifyour KEXT fails to do so, your KEXT may not load due to unrecognizedsymbols, thus rendering the KEXT useless. Dependencies in KEXTscan be considered analogous to required header files or libraries incode development; in fact, the Kernel Extension Manageruses the standard linker to resolve KEXT requirements.

Heimdall Kext For Os X 10

Building and Testing Your Extension

After creating the necessary property list and C or C++ source files, you use Project Builder tobuild your KEXT. Any errors in the source code are brought to yourattention during the build and you are given the chance to edityour source files and try again.

To test your KEXT, however, you need to leave Project Builderand work in the Terminal application(or in console mode).In console mode, all system messages are written directly to yourscreen, as well as to a log file (/var/log/system.log).If you work in the Terminal application, you must view system messagesin the log file or in the Console application.You also need to login to the root account (or use the su or sudo command), sinceonly the root account can load kernel extensions.

When testing your KEXT, you can load and unload it manually,as well as check the load status. You can use the kextload commandto load any KEXT. A manual page for kextload isincluded in OS X. (On OS X prior to 10.2, you must use the kmodload command instead.)

Note that this command is useful only when developing a KEXT.Eventually, after it has been tested and debugged, you install yourKEXT in one of the standard places (see Installed KEXTs for details).Then, it will be loaded and unloaded automatically at system startupand shutdown or whenever it is needed (such as when a new deviceis detected).

Debugging Your KEXT

KEXT debuggingcan be complicated. Before you can debug a KEXT, you must firstenable kernel debugging, as OS X is not normally configuredto permit debugging the kernel. Only the root account can enablekernel debugging, and you need to reboot OS X for the changesto take effect. (You can use sudo to gainroot privileges if you don't want to enable a root password.)

Kernel debugging is performed using two OS X computers,called the development or debug host and the debug target. Thesecomputers must be connected over a reliable network connection onthe same subnet (or within a single local network). Specifically, theremust not be any intervening IP routers or other devices that couldmake hardware-based Ethernet addressing impossible.

The KEXT is registered (and loaded and run) on the target.The debugger is launched and run on the debug host. You can alsorebuild your KEXT on the debug host, after you fix any errors youfind.

Debugging must be performed in this fashion because you musttemporarily halt the kernel on the target in order to use the debugger.When you halt the kernel, all other processes on that computer stop.However, a debugger running remotely can continue to run and cancontinue to examine (or modify) the kernel on the target.

Heimdall Kext For Os X Download

Note that bugs in KEXTs may cause the target kernel to freezeor panic. If this happens, you may not be able to continue debugging,even over a remote connection; you have to reboot the target andstart over, setting a breakpoint just before the code where theKEXT crashed and working very carefully up to the crash point.

Developers generally debug KEXTs using gdb,a source-level debugger with a command-line interface. You willneed to work in the Terminal application to run gdb.For detailed information about using gdb,see the documentation included with OS X. You can also use the help commandfrom within gdb.

Some features of gdb areunavailable when debugging KEXTs because of implementation limitations.For example:

  • You can'tuse gdb to call a functionor method in a KEXT.

  • You should not use gdb todebug interrupt routines.

The former is largely a barrier introduced by the C++ language.The latter may work in some cases but is not recommended due tothe potential for gdb to interrupt something uponwhich kdp (the kernel shim used by gdb)depends in order to function properly.

Use care that you do not halt the kernel for too long whenyou are debugging (for example, when you set breakpoints). In ashort time, internal inconsistencies can appear that cause the targetkernel to panic or freeze, forcing you to reboot the target.

Additional information about debugging can be found in When Things Go Wrong: Debugging the Kernel.

Installed KEXTs

The Kernel Extension Manager (KEXT Manager) is responsiblefor loading and unloading all installed KEXTs (commands such as kextload areused only during development). Installed KEXTs are dynamically addedto the running OS X kernel as part of the kernel's addressspace. An installed and enabled KEXT is invoked as needed.

Important: Note that KEXTs are only wrappers (bundles) arounda property list, KEXT binaries (or references to other KEXTs), andoptional resources. The KEXT describes what is to be loaded; itis the KEXT binaries that are actually loaded.

KEXTs are usually installed in the folder /System/Libraries/Extensions.The Kernel Extension Manager (in the form of a daemon, kextd),always checks here. KEXTs can also be installed in ROM or insidean application bundle.

Installing KEXTs in an application bundle allows an applicationto register those KEXTs without the need to install them permanentlyelsewhere within the system hierarchy. This may be more convenientand allows the KEXT to be associated with a specific, running application.When it starts, the application can register the KEXT and, if desired,unregister it on exit.

For example, a network packet sniffer application might employa Network Kernel Extension (NKE). A tape backup application wouldrequire that a tape driver be loaded during the duration of thebackup process. When the application exits, the kernel extension isno longer needed and can be unloaded.

Note that, although the application is responsible for registeringthe KEXT, this is no guarantee that the corresponding KEXTs areactually ever loaded. It is still up to a kernel component, suchas the I/O Kit, to determine a need, such as matching a piece ofhardware to a desired driver, thus causing the appropriate KEXTs(and their dependencies) to be loaded.



Copyright © 2002, 2013 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2013-08-08





broken image