== Host Software Host Software is software running on the USB host computer to which the icE1usb is attached. At the time of this writing, there are two options for icE1usb driver interfaces: `osmo-e1d` and `DAHDI`. === `osmo-e1d` `osmo-e1d` is a pure user-space driver, not requiring any specific Linux kernel, kernel patches or out-of-tree kernel modules. It utilizes `libusb` to talk to the icE1usb hardware and offers a unix domain socket based interface to application software. In theory, `osmo-e1d` should work on any operating system with libusb support for isochronous transfers. However, official support is limited to GNU/Linux at this point. Software such as `osmo-bsc` and `osmo-mgw` can interface `osmo-e1d` via the `libosmo-abis` support for `osmo-e1d`. More information about `osmo-e1d` can be found at its homepage https://osmocom.org/projects/osmo-e1d/wiki === DAHDI driver DAHDI (Digium Asterisk Hardware Driver Interface) is an extremely popular driver for a variety of POTS/PSTN and also TDM interface boards by originally Zaptel, later Digium and now most recently Sangoma. DAHDI is available only for Linux, and is provided as source code for a set of out-of-tree kernel modules. You must compile those modules for each specific Linux kernel version you are using. Keep this in mind when performing kernel upgrades and the like. DAHDI is supported by a wide range of open source PBX / softswitch software, including Asterisk, FreeSWITCH and yate. There is a DAHDI driver for the icE1usb available from the `laforge/icE1usb` branch of the https://github.com/osmocom/dahdi-linux git repository. When using that DAHDI Linux kernel driver, there is no need for osmo-e1d. The USB interface is directly managed inside the kernel. ==== Installing DAHDI driver Example installation steps, tested on Debian 11, for installing DAHDI Linux & DAHDI Tools. Note: Plugging in the device prior to installing may lead to issues. ---- $ sudo apt-get install -y linux-headers-`uname -r` git dfu-util make gcc autoconf libtool libnewt-dev $ git clone https://git.osmocom.org/dahdi-linux/ $ git clone https://github.com/asterisk/dahdi-tools $ cd dahdi-linux $ sudo make install $ cd ../dahdi-tools $ sudo autoreconf -i $ ./configure $ sudo make install $ sudo make install-config $ sudo modprobe icE1usb $ sudo /etc/init.d/dahdi start ---- At this point you can plug in the icE1usb, which * should make the icE1usb enumerate on USB (dmesg, lsusb) * should and scan for it with `sudo dahdi_scan` which should list the two E1 ports on the iCE1usb. * see a `/proc/dahdi/N` file (with N being the span number, typically 1 unless you have other spans) * see the device listed in `dahdi_scan` or `dahdi_tool` .Example `dmesg` output when icE1usb is plugged in ---- usb 2-1: new full-speed USB device number 5 using xhci_hcd usb 2-1: New USB device found, idVendor=1d50, idProduct=6145, bcdDevice= 0.03 usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 usb 2-1: Product: icE1usb usb 2-1: Manufacturer: osmocom usb 2-1: SerialNumber: dc697407e7682731 ---- .Example `lsusb` output after icE1usb is plugged in ---- $ lsusb -d 1d50: Bus 002 Device 005: ID 1d50:6145 OpenMoko, Inc. icE1usb ---- === Other software you can interface 3rd party applications with osmo-e1d in the following ways: * by adding support for `osmo-e1d`, e.g. via `libosmo-e1d` to the respective application * by directly implementing the USB interface exposed by icE1usb in your software Should you require any related development/porting services, please do not hesitate to reach out to sysmocom.