Skip to content

Conversation

KiyoLelou10
Copy link

This Pull Request is just an outline somebody can work with; there is still much that needs to be done here. The basic idea is that so far RIOT, for free-space communication, only uses radio frequency. I thought it would be a good idea to also make it able to use optical frequency (communication via lasers, for instance). Especially for satellites in space, using optical frequency has a lot of nice advantages.

In this PR I have added the basic outline for an optmodem driver under drivers/ to make optical frequency communication possible in RIOT. My initial approach uses Ethernet-over-optical so that we do not need to redefine data link layer framing. However, because this is optical communication, in some cases it could be useful to define custom framing, so in my implementation there is also a raw mode available.

The driver implements the following netdev ops:
send, recv, init, isr, get, set (basic), plus a stub confirm_send.

It also supports the following netopt options:
DEVICE_TYPE, IS_WIRED, ADDR_LEN (+ ADDRESS when in Ethernet mode), MAX_PDU_SIZE, STATE, and INTEGRITY_CHECK (disabled).

This is not a complete implementation — it is just a starting point. Real PHY functionality such as modulation, timing, and FEC/CRC is assumed to be handled by the optical hardware itself. The main work remaining will be for someone who actually has such laser devices to test, refine, and integrate this with the rest of RIOT. My hope is that this code provides a foundation that developers with the right hardware can use to bring optical frequency communication into RIOT.

@github-actions github-actions bot added Area: drivers Area: Device drivers Area: Kconfig Area: Kconfig integration labels Aug 14, 2025
@crasbe crasbe added State: WIP State: The PR is still work-in-progress and its code is not in its final presentable form yet Type: new feature The issue requests / The PR implemements a new feature for RIOT labels Aug 14, 2025
@crasbe crasbe marked this pull request as draft August 14, 2025 13:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: drivers Area: Device drivers Area: Kconfig Area: Kconfig integration State: WIP State: The PR is still work-in-progress and its code is not in its final presentable form yet Type: new feature The issue requests / The PR implemements a new feature for RIOT
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants