目录

树莓派改造kodi影音盒子

在树莓派上安装kodi并设置开机自启,接入红外模块并配置遥控器。

注意

1、大家有留言可以到本期哔哩哔哩视频地址给我留言。

2、安装配置完成效果视频地址

3、使用的是树莓派4b

4、使用的系统为基于Debian12 Bookworm的Raspberry Pi OS(64-bit)。

5、使用的红外接收模块为HS0038B

6、以下涉及/home/hsj/文件夹的,均需将hsj改为自己的树莓派用户名

1 安装kodi

1.1 安装kodi

#安装kodi
sudo apt install kodi

#安装kodi的iptv插件
sudo apt install kodi-pvr-iptvsimple

1.2 设置kodi开机自启动

这里使用.desktop文件的方式实现开机自启动kodi,特点是是在桌面启动后才会启动软件,缺点是每启动一次桌面都会启动一次软件,不过这个缺点对我们用来当kodi机顶盒来说没有影响。

#在主目录进入.config文件夹
cd .config

#创建autostart文件夹
mkdir autostart

#创建自启动配置文件
nano kodi.desktop

在其中写入如下内容

[Desktop Entry]
Name=controller
Comment=controller Program
Encoding=UTF-8
Exec=sh /home/hsj/Documents/kodi1.sh
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true

Ctrl + X离开,再按Y保存,然后回车。

我们继续配置kodi自启动的sh文件

nano /home/hsj/Documents/kodi1.sh

在其中写入如下内容

#! /bin/bash

kodi
exit 0

Ctrl + X离开,再按Y保存,然后回车。

这样kodi安装和开机自启就配置好了,如果我们不需要开机自启,只要将kodi.desktop文件改个名字就好了,比如改成kodi.desktop1,需要自启动我们在把名字里的1删掉。  

2 配置红外模块

2.1 HS0038B红外模块的接线

HS0038B红外模块有突起的那面朝上,从左至右的针脚如上图所示,分别为:OUT输出,GND接地和VCC电源。

/posts/myblog13/03.png
HS0038B实物
/posts/myblog13/02.png
HS0038B参数图
树莓派的引脚图如图所示
/posts/myblog13/01.png
树莓派引脚图
我们用母对母杜邦线,将红外模块的VCC引脚接到树莓派的1 3.3V PWR,将GND接到9 GND,将OUT接到11 GPIO 17,至此接线就完成了。  

2.2 修改系统的配置文件

#修改配置文件
sudo nano /boot/config.txt

#在其中加入一行如下内容保存
dtoverlay=gpio-ir,gpio_pin=17

3 配置LIRC

3.1 安装lirc

sudo apt install lirc

3.2 修改配置文件

sudo nano /etc/lirc/lirc_options.conf

将其中的两项参数改成如下内容并保存

driver          = default
device          = /dev/lirc0

3.3 测试红外是否正常

运行下面命令就可以开始测试

mode2 -d /dev/lirc0

执行该命令后,随便按下红外遥控器任意按键,出现如下字符即代表红外接收正常

pulse 629
space 518
pulse 627
space 523
pulse 628

4 配置红外遥控器按键

4.1 配置kodi_remote_lircd.conf文件

LIRC可以定义很多按键例如KEY_LEFT,KEY_RIGHT,KEY_SELECT等。而这些按键对应的遥控器信号就是通过/etc/lirc/lircd.conf.d目录下的配置文件进行关联映射。

我们要保证这个目录下只有一个结尾为.conf的文件

#我们先进入这个文件夹
sudo cd /etc/lirc/lircd.conf.d

#文件夹中有个默认的conf文件,我们要用来参考,我们给它改个名让它不生效就行了。
sudo mv devinput.lircd.conf devinput.lircd.conf01

4.2 [选作] 生成一个配置文件

我们使用下面命令生成一个配置文件,该文件仅用作配置文件的模板使用。(如觉得繁琐可跳到4.3节)

irrecord -f -d /dev/lirc0

注意

1、提示 Press RETURN to continue. 回车,之后等待,千万别按键

2、提示 Enter name of remote (only ascii, no spaces) : 输入配置文件的名字 (比如:kodi_remote)

3、提示 Press RETURN now to start recording. 回车开始录入

4、我们只是为了获取配置文件格式,所以随意按几个不同的按键,一直按下去,直到出现提示让我们给按键起一个名字

5、接下来输入键名,然后按住该键,这里建议用 KEY_LEFT、KEY_RIGHT 类似的名字,这样不会报错,他默认是对键名格式有要求的,这类名字在上面我们改了名字的conf01文件中有很多,我们可以通过查找将我们要输入的按键尽量向这些规定好的按键名上贴近,忽略要求则可以在 irrecord 命令后加 –disable-spacename

6、录入两三个键就可以了,回车结束,我们只为了获得配置文件格式

7、回车后可能在当前目录直接生成 kodi_remote.lirc.conf 文件,也可能会让按一个键再结束(注意!是按一个键,快按,不是按住不动!)

8、复制模板到 /etc/lirc/lircd.conf.d文件夹

4.3 将遥控器中的按键添加到配置文件中

我们使用下面的命令来读取遥控器发出的红外信号

mode2 -m -d /dev/lirc0

有时读取到信号可能不完整,我们多单按几次。每次的读取到的信号值不完全一样不影响。

比如现在我们要录入遥控器的上键 ,我们先将模板中的一个按键的name改为KEY_UP,我的建议是到conf01中搜索UP,找一个贴近的键名复制到name,然后我们按遥控器的上键。终端中出现如下一串数字。

	620000
     	 9176    4498     597     600     572     593
          585     584     573     595     575     595
          574     596     573     626     553     604
          561    1675     570    1692     570    1683
          558    1678     570    1679     574    1689
          565    1684     567    1677     571     595
          574     594     573     594     574    1692
          563    1679     571     594     574     596
          574     595     574    1689     566    1749
          511    1682     572     590     570     648
          520    1680     573    1674     567    1683
          580  132000

我们将头尾两串长数字串舍,去从9176到580复制到模板中。这个对齐的要求,有人说不用对齐,有人说要严格对齐。我这里为了避免出错我就对齐好了,大家如果有时间也可以试试不对齐。我们按照这个模板的格式将需要的按键全部录入到模板中。

4.4 测试按键

当需要的按键都配置好了,我们就可以进行测试。首先重启下lirc服务让它重新加载我们修改过的配置文件。

# 重启lirc服务
sudo service lircd restart

# 测试按键
irw

运行irw命令后,按下刚刚配置的遥控器的按键比如“上键”。如果出现类似下面的输出则代表配置成功,lirc成功识别遥控器的“上键”。按下其他配置的按键,检查是否都正确输出对应的按键名。

0000000000000001 00 KEY_UP kodi_remote

4.5 配置KODI遥控器按键映射文件

要想使用遥控器控制KODI,我们需要配置将LIRC的按键与KODI的按键的映射关系。根据官方文档,KODI通过 Lircmap.xml这个文件进行关联映射。该文件的格式如下所示,点击XML横条打开查看。

<lircmap>
    <!-- 这里的device为上面kodi_remote.lircd.conf文件中name后的值 -->
    <remote device="mceusb">
        <!-- no Display -->
        <power>Power</power>
        <teletext>Teletext</teletext>
        <menu>DVD</menu>
        <back>Back</back>
        <info>More</info>
        <guide>Guide</guide>
        <red>Red</red>
        <green>Green</green>
        <yellow>Yellow</yellow>
        <blue>Blue</blue>
        <left>Left</left>
        <right>Right</right>
        <up>Up</up>
        <down>Down</down>
        <select>OK</select>
        <volumeplus>VolUp</volumeplus>
        <volumeminus>VolDown</volumeminus>
        <pageplus>ChanUp</pageplus>
        <pageminus>ChanDown</pageminus>
        <mute>Mute</mute>
        <play>Play</play>
        <pause>Pause</pause>
        <stop>Stop</stop>
        <forward>Forward</forward>
        <reverse>Rewind</reverse>
        <skipplus>Skip</skipplus>
        <skipminus>Replay</skipminus>
        <record>Record</record>
        <one>One</one>
        <two>Two</two>
        <three>Three</three>
        <four>Four</four>
        <five>Five</five>
        <six>Six</six>
        <seven>Seven</seven>
        <eight>Eight</eight>
        <nine>Nine</nine>
        <zero>Zero</zero>
        <clear>Clear</clear>
        <enter>Enter</enter>
        <!-- with Display -->
        <display>Aspect</display>
        <start>Home</start>
        <myvideo>Videos</myvideo>
        <mymusic>Music</mymusic>
        <mypictures>Pictures</mypictures>
        <mytv>TV</mytv>
        <!-- old versions of harmony -->
        <star>Star</star>
        <hash>Hash</hash>
    </remote>
</lircmap>

我们对这个文件进行修改,将remote device=“kodi_remote"引号中的内容改成自己的,将每行的按键内容中间对应的按键名改成自己设置的。就像如下示例

<lircmap>
  <!-- 这里的device为上面kodi_remote.lircd.conf文件中name后的值 -->
  <remote device="kodi_remote">
    <power>KEY_POWER</power>
    <back>KEY_BACK</back>
    <select>KEY_OK</select>
    <up>KEY_UP</up>
    <down>KEY_DOWN</down>
    <left>KEY_LEFT</left>
    <right>KEY_RIGHT</right>
    <volumeplus>KEY_VOLUMEUP</volumeplus>
    <volumeminus>KEY_VOLUMEDOWN</volumeminus>
  </remote>
</lircmap>

由于Lircmap.xml这个文件名不太好编辑,我们可一先将文件名设置为Lircmap.xml.txt,编辑完成在删除名字中的.txt。 我们将文件复制到kodi的配置文件夹

mv Lircmap.xml /home/hsj/.kodi/userdata/

5 kodi

kodi的iptv插件可以导入直播源,也可以投屏。也有很多插件例如哔哩哔哩插件。树莓派实在吃灰可以改造成一个kodi机顶盒试试,同时也可以随时关闭kodi开机自启,做其他任务。树莓派的关机也可以通过遥控kodi实现,就是插电拔电还是我们手动进行,欢迎大神继续完善,至于kodi的设置,网上亦有很多教程这里就不重复赘述了。  

6 结语

我也是业余用户,在这里给大家介绍树莓派kodi的安装,希望能帮助到大家。

附:树莓派HDMI的开启和关闭,关闭了HDMI信号,树莓派也在正常运行只是不显示了。

# 关闭HDMI信号
tvservice -o
# 开启HDMI
tvservice -p

参考文献:

树莓派开机自启动的3种方法

树莓派改造电视盒子-红外遥控KODI