美文网首页
树莓派上安装meshctl(译文)

树莓派上安装meshctl(译文)

作者: 苏里南公牛 | 来源:发表于2019-12-23 14:07 被阅读0次

    原文链接:

    https://medium.com/@ly.lee/install-meshctl-on-raspberry-pi-51aa1e2579e6

    译者注meshctl是运行在linux平台上的蓝牙Mesh配置管理工具软件。

    1. 安装BlueZ

    meshctl属于开源蓝牙协议栈BlueZ软件套件的一部分(BlueZ无法在Windows及macOS上安装,所以我们使用树莓派。译者注:实际上BlueZ是Linux官方蓝牙协议栈)。BlueZ在树莓派上应该属于预安装软件,但是默认的安装是缺少meshctl工具的。这篇文章讲解如何安装带有meshctl选项的BlueZ。

    开始前,请先参阅蓝牙技术联盟(SIG)的官方指南:

    “Developer Study Guide: Deploying BlueZ v5.50 on Raspberry Pi3, Part1 — Deployment”

    跟着如下章节中的指示做:

    “0. Prerequisite”

    “1. Install BlueZ v5.50”

    在 “2. Rebuilding the kernel for BlueZ v5.50” 这一章节前停止。

    2. 下载树莓派内核源码

    我们需要重新编译构建树莓派的内核。为啥呢?因为meshctl需要AEAD-AES_CCM加密套件,这玩意会以一个安全服务的形式运行在内核中。这一步需要超过一小时的时间去完成。

    在命令提示符里输入如下命令:

    cd ~

    sudo apt-get install -y git bc bison flex libssl-dev

    uname -a

    你应该能看到形似如下的命令输出:

    Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

    看到那个4.19了不?这个很重要——这是你树莓派内核的版本号。我们需要下载对应我们内核版本的内核源代码,否则我们的树莓派在重新构建内核后很可能启动不了。

    输入下面的命令:

    git clone --depth=1 --branch rpi-4.19.y https://github.com/raspberrypi/linux

    注意:将上述命令中的4.19替换成你自己树莓派内核的版本号。

    3. 初始化树莓派内核配置

    首先,我们将新的树莓派内核初始化为默认设置。

    如果你的树莓派是1,zero,zero W,或者Compute Module,输入:

    cd linux

    KERNEL=kernel

    make bcmrpi_defconfig

    如果你的树莓派是2,3,3+,或者Compute Module 3,输入:

    cd linux

    KERNEL=kernel7

    make bcm2709_defconfig

    如果你的树莓派是4,输入:

    cd linux

    KERNEL=kernel7l

    make bcm2711_defconfig

    4. 配置树莓派内核

    现在,让我们配置内核并开启meshctl所需要的AEAD-AES_CCM加密套件。输入:

    make menuconfig

    使用键盘上的方向键将光标移动到Cryptographic API选项:

    按回车。

    使用键盘上的方向键,在如下模块选项上移动光标,按 S 键进行选择:

    Hash Modes → CMAC support

    Random Number Generation → User-space interface for hash algorithms

    Random Number Generation → User-space interface for symmetric key cipher algorithms

    当某个模块被选中的时候,模块前面的<>中会变成 *。

    多次点击Esc键直到看到 Do you wish to save your new configuration… 的提示:

    选择YES并按下回车,回到命令提示符界面。

    5. 构建树莓派内核

    在正式构建内核前,我们先把老的内核备份到 /OLDboot 以防新内核启动失败。输入:

    sudo cp -r /boot /OLDboot

    现在我们正式编译、安装新的内核。输入:

    make -j4 zImage modules dtbs

    sudo make modules_install

    sudo cp arch/arm/boot/dts/*.dtb /boot/

    sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/

    sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/

    sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

    sudo sync

    sudo reboot

    这个过程估计得要一个多小时才能完成。等上述流程都完成后,我们的树莓派就会以新的内核启动。

    6. 测试meshctl

    重启后,打开命令行并输入:

    meshctl

    按下回车键,应该会出现[meshctl]#提示符。

    如果你没看到任何错误信息,那么恭喜你成功安装了meshctl

    输入下面这个命令退出meshctl

    exit

    注意:请记住永远使用exit命令来正确地退出meshctl,否则的话蓝牙驱动会被锁定,导致你最终不得不重启树莓派来解决这个问题。

    如果你看到的是下面这个信息:

    Failed to parse provisioning database file prov_db.json

    这表明你的内核并没有正确地安装AEAD-AES_CCM套件。仔细阅读,并按本文前面的章节步骤重新做一遍。

    参考文献

    如果你在配置及构建树莓派内核的过程中遇到任何问题,请参阅官方指导文档:

    “Kernel Building”

    “Configuring The Kernel”

    如果你在配置管理蓝牙Mesh的过程中遇到任何问题,请参阅蓝牙技术联盟的官方指导文档:

    “How to Deploy BlueZ v5.50 on Raspberry Pi 3 and Use It, Part 2 — Provisioning”

    这里有一个很棒的关于在Zephyr嵌入式OS上的搞蓝牙Mesh的系列文章:

    “Patient Monitoring System using 96Boards”

    相关文章

      网友评论

          本文标题:树莓派上安装meshctl(译文)

          本文链接:https://www.haomeiwen.com/subject/femznctx.html