See (https://mynewt.apache.org/network/ble/ble_intro/).
NimBLE is usually built as a part of Apache Mynewt OS, but ports for
other RTOS-es are also available.
cd porting/examples/linux
make
First insert a USB Bluetooth dongle. These are typically BLE 4.0 capable.
Verify the dongle is connected with hciconfig:
$ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1B:DC:06:62:5E ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:5470 acl:0 sco:0 events:40 errors:0
TX bytes:5537 acl:176 sco:0 commands:139 errors:1
Then run the application built in step one. The application is configured
in sysconfig.h to use hci0.
cd porting/examples/linux
sudo ./_build/nimble_linux.out
The Operating System Abstraction Layer (OSAL) used to port Nimble to Linux
has a suite of unit tests.
cd tests/unit/porting/npl
make test