Hardware Description

The CyberGenie base station is a USB device with three interfaces:

Command (and event) communication between the host and the device consists of messages sent to the respective interface, and events read by the host from the interrupt endpoint of the base controller interface. At a byte level, the messages indicate the destination (or source), so it is trivial to de-multiplex commands at a driver level, giving the appearance of a single interface for sending and receiving messages.

Audio is transferred to and from the device via USB channels. Each channel has an associated isochronous in/out endpoint on the audio switch interface. The native format of the audio is either signed linear, aLaw, or uLaw. Reading (writing) to a channels endpoints is all that is required to transfer audio data across the channel to/from the sinks/sources configured by the audio switch.

The audio switch operates using the concept of time slots. Each PSTN line and USB channel has a permanently allocated time slot, while the DECT handsets must negotiate a time slot for each call (done independently of the host). Additionally, there is a special time slot corresponding to silence. Each direction of audio transfer can be set up independently. That is, each time slot has a list of sources from which it will receive audio, independent of where its own audio is sent. This allows for the establishment of half-duplex connections between time slots. Additionally, audio can be transferred between any time slots independently of the host.

Base controller

As a fail-safe, the base controller will operate the device in a stand-alone mode, until instructed to do otherwise by the host. In this mode, handsets are immediately connected to the first PSTN line when calls are requested, and events (i.e. rings) on the PSTN line will be passed to the handsets.

Switching the base station into operational mode is done through a series of messages that form a handshake protocol. After the switch is made, the base station must receive a heartbeat message from the host every second to remain in operational mode. If the heartbeat is not received in the proper timeframe, the base station will switch back to stand-alone operation. Alternatively, stand-alone mode can be requested by the host. When in stand-alone mode, no events (PSTN or DECT) are transmitted to the host.

PSTN lines

The standard CyberGenie base station has support for two PSTN lines (FXO signaling), although there are reports of development hardware in circulation with support for four lines. The PSTN lines will accept commands (on hook, off hook, answer, dial, flash), and will send notification of certain events (ring, line un-available, busy tone detected, fax tone detected, CID received). Each PSTN line has a unique time slot, which is used both for establishing audio connections, and for determining the destination/source of commands/events.

There is also a port on the base station for connecting a fax machine. However, it appears that this is only a pass-through to the first PSTN line, and not an independent FXS signaled port.

DECT controller

The DECT controller has some functionality that is independent of handsets. This includes setting the authentication code to be used for subscribing handsets, and querying/altering the list of subscribed handsets. This functionality does not form part of the regular usage of the system; it is only used for initial setup or configuration changes.

DECT handsets

A single base station can support up to 10 cordless handsets. The handsets communicate using the DECT protocol (as common in European cordless telephones), but at the 2.4GHz frequency (instead of the 1.8GHz frequency used by standard DECT equipment). Like the PSTN lines, each handset will accept commands (start/stop ring pattern, end call, change display), and will send notification of events (key presses, call requested, call rejected, call ended). When a call is started, either at the request of the handset or the host, the DECT controller determines the time slot to be used, which is communicated to the host and to the handset. To transfer audio, the audio switch must be configured using this time slot, as appropriate.