Tree [7c8ba1] master /

File Date Author Commit
Documentation 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
addons 2012-07-12 Jan Kiszka Jan Kiszka [efcbd6] rtnetproxy: Fix build up to kernel 3.2
config 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
drivers 2013-12-02 Leopold Palomo-Avellaneda Leopold Palomo-Avellaneda [7c8ba1] Updating the drivers with the _devinit issue an...
examples 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
scripts 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
stack 2012-09-12 Jan Kiszka Jan Kiszka [ff3084] nomac: Avoid warnings about write-only variables
tools 2013-01-17 Jan Kiszka Jan Kiszka [65af17] rtping: Fix ping limit counter
.gitignore 2009-02-28 Jan Kiszka Jan Kiszka [0fc7df] Add .gitignore rules
AUTHORS 2009-02-28 Jan Kiszka Jan Kiszka [92d4a9] Fold rtnet subdir into main directory
COPYING 2011-01-17 Jan Kiszka Jan Kiszka [ebb51a] Cut application howto from COPYING
ChangeLog 2012-09-12 Jan Kiszka Jan Kiszka [2827bb] Update Changelog with rt_r8169 changes 2009-07-04 Jan Kiszka Jan Kiszka [a2fe2a] Add Module.markers and modules.order to clean/d... 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
INSTALL 2009-02-28 Jan Kiszka Jan Kiszka [92d4a9] Fold rtnet subdir into main directory
Kconfig 2012-07-16 Jan Kiszka Jan Kiszka [2f2e53] Prepare for 0.9.13 release
NEWS 2009-02-28 Jan Kiszka Jan Kiszka [92d4a9] Fold rtnet subdir into main directory
README 2013-05-09 Kai Bollue Kai Bollue [a1a7c9] Added note in README on lacking support for sev...
TODO 2009-02-28 Jan Kiszka Jan Kiszka [92d4a9] Fold rtnet subdir into main directory
aclocal.m4 2011-10-25 Jan Kiszka Jan Kiszka [c910a4] autogen run
configure 2012-08-28 Jan Kiszka Jan Kiszka [c3bf67] autogen run 2012-08-26 Wolfgang Grandegger Wolfgang Grandegger [b0f59b] rt_fec: driver for the Freescale FEC Ethernet c...
defconfig 2010-04-10 Jan Kiszka Jan Kiszka [595719] Update defconfig
makefile 2011-09-05 Jan Kiszka Jan Kiszka [a3bc07] Remove invalid % from all rule

Read Me

                             RTnet Version 0.9.13

What is it?
RTnet is an Open Soure hard real-time network protocol stack for Xenomai and
RTAI (real-time Linux extensions). It makes use of standard Ethernet hardware
and supports several popular card chip sets, including Gigabit Ethernet.
Moreover, Ethernet-over-1394 support is available based on the RT-FireWire
protocol stack.

RTnet implements UDP/IP, TCP/IP (basic features), ICMP and ARP in a
deterministic way. It provides a POSIX socket API to real-time user space
processes and kernel modules. Access to nondeterministic media is managed by
the pluggable RTmac layer and the actual control discipline. As default for
Ethernet, a Time Division Multiple Access (TDMA) discipline is provided.

What are the requirements?
- Linux kernel 2.6.x
- Xenomai 2.0 or better
  RTAI 3.3-cv or better
- x86, PowerPC, or ARM platform (other platforms are untested)
- RealTek 8139, Intel 8255x (EtherExpress Pro 100), Intel PRO/1000 (e1000 and
  e1000e), DEC 21x4x-based (tulip), AMD PCnet32/PCnetPCI, VIA Rhine, NatSemi
  DP8381x, RTL8169 network adapter, MPC8260 FCC, MPC8xx SCC/FEC, or MPC5200
  on-chip controllers, SMSC LAN91C111 embedded controller, Intel 82575 (igb)
- CAUTION: On systems with > 4 GB RAM, currently only the following chipsets
  will work: RealTek 8139, Intel PRO/1000 PCI-E (e1000e, NOT e1000),
  Intel 82575 (igb). For other drivers, as a workaround, RAM usage can be
  limited to 4 GB by giving mem=4096M as boot parameter.
- For Ethernet-over-FireWire see
- For RT-WLAN: Ralink 2500

How to install it?
1. Install and test a suitable real-time Linux version
2. cd to a preferred directory (e.g. /usr/src)
3. tar xvjf <PATH-TO-RTNET-ARCHIVE>/rtnet-X.X.X.tar.bz2
4. cd rtnet
5. make menuconfig (run "make help" for further information)
   Set at least the real-time extension installation path and the path RTnet
   is to be installed to (called <PREFIX> from now on). You could also check
   other options if they fit your requirements. Help is available for each
6. make
7. make install
   This will create the directories <PREFIX>/sbin with all configuration tools,
   <PREFIX>/modules containing all core modules, <PREFIX>/include with the
   required API header files, and <PREFIX>/etc with configuration files to be
   used with the rtnet startup script.
8. run "mknod /dev/rtnet c 10 240" on your target system to create the
   configuration interface device node. Alternatively, there is also an udev
   rules file available under tools/00-rtnet.rules.

How to test it?
1. Shutdown the network device which shall become part of the RT-network and
   remove its driver module (this also means that it must not be compiled
   into the kernel!)
2. Load required real-time modules (modular Xenomai: xeno_hal, xeno_nucleus,
   xeno_rtdm, RTAI: rtai_hal, rtai_ksched/rtai_lxrt, rtai_sem, rtai_rtdm)
3. Check <PREFIX>/etc/rtnet.conf and adapt at least the following parameters:
4. Run <PREFIX>/sbin/rtnet start
5. Run rtping <remote-host> or run an example application
   (e.g. examples/xenomai/posix/rtt-{sender,responder})

Special notes
Starting the RTnet core manually (without RTmac):
  1. Load required componentes of the real-time Linux extension (see above)
  2. Load RTnet modules: rtnet (core), rtipv4 (IPv4 protocol + API), rtpacket
     (packet protocol + API), rt_loopback (rtlo loopback driver), rt_XXX
     (real-time NIC driver)
  3. Configure real-time NICs: rtifconfig rtethX up <IP>,
     rtifconfig rtlo up
  4. Add host routes to target nodes, either explicitly:
     rtroute add <target IP> <target hw-address> dev <local NIC>
     Or trigger an ARP handshake:
     rtroute solicit <target IP> dev <local NIC>
  5. Don't forget that on RTAI and on Xenomai 2.0.x the system timer has to be
     started by someone (in typical RTnet setups this is done by loading RTcfg).

Ulrich Marx                             - core programming
Nathan Gustavson                        - testing and bug fixing
Marc Kleine-Budde                       - RTmac, testing, bug fixing, autotools
Jan Kiszka <>       - project management, core programming
Wittawat Yamwong <>   - testing, documents
Hans-Peter Bock <>   - testing, bug fixing, rtdm-select
Mathias Koehrer                         - 3c59x-rt, rtnetproxy, testing,
<>             bug fixing, ip fragmentation, e1000
Vinay Sridhara                          - ICMP support
Erwin Rol <>         - Ethereal plugin, rtnetproxy
Wolfgang Grandegger                     - MPC drivers, testing
Erik Buit                               - NatSemi driver
Yuchen Zhang                            - Ethernet-over-FireWire support
Klaus Keppler                           - RTL8169 gigabit driver
Bill Vareka <>    - joint-slots TDMA extension
Fabian Koch <>       - various improvements of the
                                          configuration interfaces and tools
Daniel Gregorek <>         - RT-WLAN support, RT2500 driver
Jorge Almeida                           - SOCK_RAW for packet sockets and
<>          ETH_P_ALL support
Yeoh Chun Yeow <>	- rt_at91_ether driver
Cristiano Mantovani <>,
Stefano Banzi                           - rt_macb driver
Gilles Chanteperdrix                    - NIC statistics, select() groundwork,
<>        various fixes and enhancements
... and more, see git logs!

David Schleef                           - he wrote the original RTnet, some
                                          parts of this version are based on
                                          his code

RTnet is free software, and you are welcome to redistribute it under
the terms of the GNU General Public License unless otherwise stated. This
program comes with ABSOLUTELY NO WARRANTY. See "COPYING" and header files
rtnet.h and rtmac.h for details.