Linux Simple I/O Library

../
CHANGELOG.txt  4741084Jan 30 08:31:16 2026
COPYING  1256Jan 6 19:00:32 2026
Makefile  7058Jan 27 19:29:36 2026
README.md  6228Dec 31 12:35:22 2025
README.txt  4239Dec 31 12:35:22 2025
ada/  512Dec 26 01:34:02 2025
attic/  512Jan 27 19:29:36 2026
c++/  512Mar 28 17:07:02 2021
c/  1024Jan 29 17:00:15 2026
control  252Nov 11 08:09:33 2021
csharp/  512Apr 28 00:29:23 2025
doc/  1024Dec 31 12:46:27 2025
dotnet/  512Nov 29 20:36:24 2025
elements/  512Feb 15 00:21:38 2024
freepascal/  512Dec 4 15:43:46 2021
gm2/  512Nov 4 13:33:47 2025
go/  512Jan 25 10:07:54 2024
hotplug/  512Dec 17 22:00:48 2020
include/  512Nov 14 20:35:58 2025
java/  512Jan 27 19:29:36 2026
linux/  512Dec 31 12:35:22 2025
nuget/  512Nov 29 20:36:24 2025
python/  512Feb 6 18:52:41 2024
win64/  512Jul 11 15:38:36 2025

libsimpleio is an attempt to encapsulate (as much as possible) the ugliness of Linux I/O device access. It provides services for the following types of I/O devices:

Although libsimpleio was originally intended for Linux microcomputers such as the Raspberry Pi, it can also be useful on larger desktop Linux systems.

The C wrapper functions exported by libsimpleio all follow the same uniform pattern:

All of the C wrapper functions are declared between _BEGIN_STD_C and _END_STD_C for C++. Additional source code libraries are provided for Ada, C++, C#, Free Pascal, Modula-2, and Python that define OOP (Object Oriented Programming) thick binding classes for libsimpleio.

The Ada library unit packages in the libsimpleio code tree are especially rich and are both more numerous and more refined than those for other programming languages. Ada was originally developed and released in 1983 to replace a myriad of other programming languages used for developing software for military aircraft and other complex weapons systems. With the help of libsimpleio, Ada is still one of the best languages around for developing reliable embedded systems software for Linux computers.

See also MuntsOS Embedded Linux, which uses libsimpleio pervasively.

Documentation at https://repo.munts.com/libsimpleio/doc

User Manual:

https://repo.munts.com/libsimpleio/doc/UserManual.pdf

C Wrapper Functions API Specification:

https://repo.munts.com/libsimpleio/doc/libsimpleio.html

.Net Binding API Specifications:

https://repo.munts.com/libsimpleio/doc/libremoteio.dll
https://repo.munts.com/libsimpleio/doc/libsimpleio.dll

Git Repository

The libsimpleio source code tree is available at:

https://github.com/pmunts/libsimpleio

Use the following command to clone it:

git clone https://github.com/pmunts/libsimpleio.git

Debian Package Repository

Prebuilt libsimpleio packages for Debian Linux are available at:

https://repo.munts.com/debian13

Alire Crates

libsimpleio mcp2221 remoteio
wioe5_ham1 wioe5_ham2 wioe5_p2p

Ada programs using the libsimpleio crate run only on Linux target computers.

Ada programs using the mcp2221 crate can run on Linux, macOS, or Windows target computers, enabling you to control I/O resources on a USB tethered MCP2221A USB 2.0 to I2C/UART Protocol Converter with GPIO, perhaps using a module like the Adafruit MCP2221A Breakout.

Ada programs using the remoteio crate can run on Linux, macOS, or Windows target computers, enabling you to control GPIO resources on a USB tethered or networked Remote I/O Protocol server.

NuGet Packages for .Net

libremoteio libremoteio-templates
libsimpleio libsimpleio-templates

Use one of the following command sequences to create a .Net program project:


dotnet new install libremoteio-templates
mkdir myprogram
cd myprogram
dotnet new csharp_console_libremoteio
dotnet new sln
dotnet sln add myprogram.csproj
Or

dotnet new install libsimpleio-templates
mkdir myprogram
cd myprogram
dotnet new csharp_console_libsimpleio
dotnet new sln
dotnet sln add myprogram.csproj

Questions or comments to Philip Munts phil@munts.net