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