Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
I²C
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Operating system support == * In [[AmigaOS]] one can use the i2c.resource component<ref>[http://www.os4depot.net/?function=showfile&file=driver/misc/i2c.resource.lha i2c.resource component] {{webarchive|url=https://web.archive.org/web/20110724123557/http://www.os4depot.net/?function=showfile&file=driver%2Fmisc%2Fi2c.resource.lha |date=2011-07-24}} for AmigaOS 4.x.</ref> for AmigaOS 4.x and [[MorphOS]] 3.x or the shared library ''i2c.library'' by Wilhelm Noeker for older systems. * [[Arduino]] developers can use the "Wire" library. * [[CircuitPython]] and [[MicroPython]] developers can use the busio.I2C or machine.I2C classes respectively. * [[Maximite]] supports I<sup>2</sup>C communications natively as part of its MMBasic. * [[PICAXE]] uses the i2c and hi2c commands. * [[eCos]] supports I<sup>2</sup>C for several hardware architectures. * [[ChibiOS/RT]] supports I<sup>2</sup>C for several hardware architectures. * {{anchor|BSD|FreeBSD|OpenBSD|NetBSD}}[[FreeBSD]], [[NetBSD]] and [[OpenBSD]] also provide an I<sup>2</sup>C framework, with support for a number of common controllers and sensors. ** Since [[OpenBSD]] 3.9 (released {{Start date and age|2006|05|01|df=yes}}), a central {{mono|i2c_scan}} subsystem probes all possible sensor chips at once during boot, using an [[ad hoc]] weighting scheme and a local caching function for reading register values from the I<sup>2</sup>C targets;<ref name=i2c_scan>{{cite web |url = http://bxr.su/o/sys/dev/i2c/i2c_scan.c#probe_val |author= Theo de Raadt |author-link = Theo de Raadt |date= 2015-05-29 | access-date=2019-03-04 |title= /sys/dev/i2c/i2c_scan.c#probe_val |website= Super User's BSD Cross Reference |publisher= [[OpenBSD]] |quote = <code>static u_int8_t probe_val[256];</code> }}</ref> this makes it possible to probe sensors on [[general purpose technology|general-purpose]] [[commercial off-the-shelf|off-the-shelf]] i386/amd64 hardware during boot without any configuration by the user nor a noticeable probing delay; the matching procedures of the individual drivers then only has to rely on a string-based "friendly-name" for matching;<ref name=mmath>{{cite thesis |degree= [[Master of Mathematics#Canada|MMath]] |author= Constantine A. Murenin |date= 2010-05-21 |section = 5.2. I<sup>2</sup>C bus scan through i2c_scan.c |title= OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control. |location= [[University of Waterloo]] |publisher= UWSpace |url = http://cnst.su/MMathCS |hdl = 10012/5234 |id = Document ID: ab71498b6b1a60ff817b29d56997a418. }}</ref> as a result, most I<sup>2</sup>C sensor drivers are automatically enabled by default in applicable architectures without ill effects on stability; individual sensors, both I<sup>2</sup>C and otherwise, are exported to the userland through the sysctl [[hw.sensors]] framework. {{As of|2019|03}}, OpenBSD has over two dozen device drivers on I<sup>2</sup>C that export some kind of a sensor through the [[hw.sensors]] framework<!-- `sensordev_install path:i2c` returns 28 results as of 2019-03-05; although this doesn't count lm(4) properly-->, and the majority of these drivers are fully enabled by default in i386/amd64 <code>GENERIC</code> kernels of OpenBSD. ** In [[NetBSD]], over two dozen<!-- `sysmon_envsys_register path:i2c` returns 26 results as of 2019-03-05 --> I<sup>2</sup>C target devices exist that feature hardware monitoring sensors, which are accessible through the sysmon [[envsys]] framework as [[property list]]s. On general-purpose hardware, each driver has to do its own probing, hence all drivers for the I<sup>2</sup>C targets are disabled by default in NetBSD in <code>GENERIC</code> i386/amd64 builds. * In [[Linux]], I<sup>2</sup>C is handled with a device driver for the specific device, and another for the I<sup>2</sup>C (or [[System Management Bus|SMBus]]) adapter to which it is connected. Hundreds of such drivers are part of current Linux kernel releases. * In [[Mac OS X]], there are about two dozen I<sup>2</sup>C kernel extensions that communicate with sensors for reading voltage, current, temperature, motion, and other physical status. * In [[Microsoft Windows]], I<sup>2</sup>C is implemented by the respective device drivers of much of the industry's available hardware. For [[Human interface device|HID]] embedded/[[System on a chip|SoC]] devices, Windows 8 and later have an integrated I²C bus driver.<ref>[https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/hid-over-i2c-guide Introduction to HID over I2C]</ref> * In [[Windows CE]], I<sup>2</sup>C is implemented by the respective device drivers of much of the industry's available hardware. * Unison OS, a POSIX RTOS for IoT, supports I<sup>2</sup>C for several MCU and MPU hardware architectures. * In [[RISC OS]], I<sup>2</sup>C is provided with a generic I<sup>2</sup>C interface from the IO controller and supported from the OS module system * In [[Sinclair QDOS]] and [[Minerva (QDOS reimplementation)|Minerva]] [[Sinclair QL|QL]] [[operating systems]] I<sup>2</sup>C is supported by a set of extensions provided by TF Services. * In [[Zephyr (operating system)|Zephyr OS]], I<sup>2</sup>C is supported through the i2c device driver API.<ref>{{cite web | url=https://docs.zephyrproject.org/latest/hardware/peripherals/i2c.html | title=Inter-Integrated Circuit (I2C) Bus — Zephyr Project Documentation }}</ref> This API provides a generic interface for communicating with I<sup>2</sup>C devices, allowing for a wide range of I<sup>2</sup>C devices to be supported.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
I²C
(section)
Add topic