.. _networking_with_host: Networking with the host system ############################### .. toctree:: :maxdepth: 1 :hidden: native_posix_setup.rst qemu_eth_setup.rst qemu_setup.rst usbnet_setup.rst While developing networking software, it is usually necessary to connect and exchange data with the host system like a Linux desktop computer. Depending on what board is used for development, the following options are possible: * QEMU using SLIP (Serial Line Internet Protocol). * Here IP packets are exchanged between Zephyr and the host system via serial port. This is the legacy way of transferring data. It is also quite slow so use it only when necessary. See :ref:`networking_with_qemu` for details. * QEMU using built-in Ethernet driver. * Here IP packets are exchanged between Zephyr and the host system via QEMU's built-in Ethernet driver. Not all QEMU boards support built-in Ethernet so in some cases, you might need to use the SLIP method for host connectivity. See :ref:`networking_with_eth_qemu` for details. * native_posix board. * The Zephyr instance can be executed as a user space process in the host system. This is the most convenient way to debug the Zephyr system as one can attach host debugger directly to the running Zephyr instance. This requires that there is an adaptation driver in Zephyr for interfacing with the host system. An Ethernet driver exists in Zephyr for this purpose. See :ref:`networking_with_native_posix` for details. * USB device networking. * Here, the Zephyr instance is run on a real board and the connectivity to the host system is done via USB. See :ref:`usb_device_networking_setup` for details.