1 of 12

Seify

Rusty HW Abstraction for Shiny Samples

SDR Academy :: June 2023 :: Friedrichshafen, Germany

2 of 12

About Me: Bastian Bloessl

Substitute Prof @ Uni Paderborn� Computer Networks Group� cs.upb.de/cn

Researcher @ TU Darmstadt� Secure Mobile Networking Lab� www.seemoo.de

Maintainer @ FutureSDRwww.futuresdr.org

Main Interests:� Software Defined Wireless� Communication Systems

2

Bastian Bloessl :: Seify

3 of 12

@futuresdr

  • Asynchronous�no issues with I/O or blocking
  • Extensible�custom buffers, custom schedulers, …
  • Portable�Linux, macOs, Windows, Android, Web

3

Bastian Bloessl :: Seify

4 of 12

New Hardware! New Drivers!

4

Bastian Bloessl :: Seify

5 of 12

New Hardware! New Drivers!

5

We need Soapy…but for Rust

Bastian Bloessl :: Seify

6 of 12

What is Seify?

  • Solves similar problems as Soapy and gr-osmosdr
  • Seife: German for soap
  • HW abstractions the Rust way
  • RIIR: Rewrite it in Rust :-)
  • FutureSDR HW driver
  • Typed
  • … an invitation to collaborate

6

Bastian Bloessl :: Seify

7 of 12

Soapy is Great!

  • Soapy API = Seify API
  • Device Args/Filter
  • Key-value dictionaries
  • Supports every type that implements the FromStr trait
  • Serde support

7

Bastian Bloessl :: Seify

8 of 12

…but also

  • Levels of indirection�libusb → hw driver → soapy driver → soapy ( soapy-sys soapy-rs)
  • System-wide installation of modules, i.e., you usually want to have many installed → so does your package manager
  • Problems with some modules

8

Bastian Bloessl :: Seify

9 of 12

Seify

  • Zero installation for pure Rust drivers
  • Supports Soapy (will hopefully phase-out in the future)
  • Enable only the SDR drivers you need selectively per binary

  • At the moment, no modules. (Not a priority right now.)

9

Bastian Bloessl :: Seify

10 of 12

Typed Interface vs Dynamic Dispatch

  • Soapy is dynamic dispatch only
  • Seify supports both (generic device can still be downcasted)
  • The typed interface can be compiled away
  • There should be no reason not to use Seify

10

Bastian Bloessl :: Seify

11 of 12

Demo

12 of 12

Conclusion

12

Bastian Bloessl :: Seify