How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G

目录

 

Make kernel

Config Bluetooth

Check the environment

Others


Make kernel

Update linux kernel 4.9.201, and config modules related to bluetooth

Reference links(if need):

https://blog.hypriot.com/post/nvidia-jetson-nano-build-kernel-docker-optimized/
https://blog.csdn.net/qq_33475105/article/details/111995309

Prepare

If sudo get install someting firstly:

$ sudo apt-get update
$ sudo apt-get install -y libncurses5-dev

else

$ sudo apt-get install -y libncurses5-dev

Download kernel 4.9.201

https://developer.nvidia.com/embedded/linux-tegra

Select L4T Driver Package[BSP] Sources

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第1张图片

Extrace kernel BSP source file

In download dir

$ cd
$ mkdir -p nano-bsp-sources
$ cd nano-bsp-sources

Then copy BSP resources to nona-bsp-sources, and tar

$ tar xvf public_sources.tbz2
$ mv Linux_for_Tegra/source/public/kernel_src.tbz2 ~/
$ cd

Extrace kernel src

$ cd
$ tar xvf ./kernel_src.tbz2

 Compile the default Linux Kerne

*Below information is updated after I re-config the kernel, maybe your old kernel has the different things, ignore them;

$ cd ~/kernel/kernel-4.9
$ zcat /proc/config.gz > .config
$ head -10 .config
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 4.9.201 Kernel Configuration
#
CONFIG_ARM64=y
CONFIG_64BIT=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_MMU=y
CONFIG_DEBUG_RODATA=y
CONFIG_ARM64_PAGE_SHIFT=12

Backup orignal kernel

$ cp .config kernel.config.original

Customizing kernel config

$ make menuconfig

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第2张图片

 

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第3张图片

 

**Important selections for Bluetooth as below

You need to config this same as mine

 

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第4张图片

Some others that need to config as well

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第5张图片

In Cryptographic API, enable 

CCM support、CMAC support、User-space interface for hash algorithms、User-space interface for symmetric key cipher algorithms、User-space interface for AEAD cipher algorithms 

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第6张图片

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第7张图片

How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G_第8张图片

Then Save and exit

 

Make kernal and module

$ cd ~/kernel/kernel-4.9

# Prepare the kernel build
$ make prepare
$ make modules_prepare

# Compile kernel image and kernel modules
$ time make -j5 Image
$ time make -j5 modules

# Install modules and kernel image
$ sudo make modules_install
$ sudo cp arch/arm64/boot/Image /boot/Image

Then reboot NANO and check if the kernel time is the build time

$ sudo reboot
...
#After restart
$ uname -a
Linux colin-desktop 4.9.201 #1 SMP PREEMPT Fri Apr 9 21:41:19 CST 2021 aarch64 aarch64 aarch64 GNU/Linux

Config Bluetooth

Install libbluetooth

dpkg -l|grep bluetoo 

Check whether libbluetooth lib is installed or not;
if not, 

sudo apt-get install libbluetooth-dev

Edit bluetooth service file, in NANO, the service file is as below:

gedit /lib/systemd/system/bluetooth.service.d/nv-bluetooth-service.conf&

Backup  --noplugin=audio,a2dp,avrcp, and add parameters: -d -C

Automatically add SP protocol in channel 1, then we can use serier port for bluetooth to communicate with other bluetooth device.

[Service]
# systemd needs to reset value first before assigning new one
#--noplugin=audio,a2dp,avrcp
ExecStart=
ExecStart=/usr/lib/bluetooth/bluetoothd -d -C
ExecStartPost=/usr/bin/sdptool add --channel=1 SP

Reboot NANO;

Check the environment

Check bluetoothd

$ ps aux | grep blue
root      4660  0.0  0.1   7108  3144 ?        Ss   14:41   0:00 /usr/lib/bluetooth/bluetoothd -d -C

You will find the bluetooth deamon is running as expected;

Check SP protocol 

$ su
#In root user
$ sdptool browse local
...
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10001
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Serial Port" (0x1101)
    Version: 0x0100
...

SP protocol is constructed succesfully.

Others

Check bluetooth status

$  hciconfig hci0
hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:0A  ACL MTU: 310:10  SCO MTU: 64:8
	UP RUNNING PSCAN 
	RX bytes:694 acl:0 sco:0 events:50 errors:0
	TX bytes:3656 acl:0 sco:0 commands:50 errors:0

You will find its status is UP RUNNING PSCAN

You need to use

$ hciconfig hci0 piscan

to change the status as UP RUNNING PSCAN ISCAN

$  hciconfig hci0
hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:0A  ACL MTU: 310:10  SCO MTU: 64:8
	UP RUNNING PSCAN ISCAN 
	RX bytes:706 acl:0 sco:0 events:52 errors:0
	TX bytes:3695 acl:0 sco:0 commands:52 errors:0

Finnally you can use SP protocol to develop your own bluetooth communication feature .

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(NVIDIA,NANO,ubuntu,kernel,bluetooth)