apache / mynewt-nimble

Apache mynewt
https://mynewt.apache.org/
Apache License 2.0
675 stars 390 forks source link

Is it possible to run Nimble auto-pts on linux? #1649

Open AminoACID123 opened 9 months ago

AminoACID123 commented 9 months ago

I notice that Nimble already provides a linux port. I wonder if it is possible to perform auto-pts on linux too?

KKopyscinski commented 8 months ago

It is possible but it would require work on both auto-pts and NimBLE side. On autopts you'd have to create support in autoptsclient for new project - there is one for Mynewt, but it supports Mynewt running on board - it uses BSPs from ptsprojects/boards. Linux (native) build is host only, and app uses controller provided by Linux. Because such app runs on Linux system and not physical board, it renders current BTP communication useless - there is no UART. I tried building bttester app on native with config:

syscfg.vals:
  BLE_TRANSPORT_LL: socket
  BLE_SOCK_USE_LINUX_BLUE: 1
  BLE_SOCK_USE_TCP: 0

and there are some compilation errors. Maybe they could be resolved by https://github.com/apache/mynewt-core/pull/3042 , or by modifying app code.

Besides that, another communication channel for BTP commands would have to be made, AFAIK TCP could work. You could take a look at uart_pipe.c - we would have to make similar one for TCP.

I'm not sure it would be worth to implement all of this, because PTS is used to qualify Host itself - it does not depend on what platform Host is built. And all tests can be run or nRF52 or nRF53, and other BSP support could be added more easily - it would require only adding board support in autopts, which basically tells autopts how to restart board, and optionally build and flash image onto it.