doc:appunti:hardware:raspberrypi_nas
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:hardware:raspberrypi_nas [2021/03/11 10:55] – [Subsystems] niccolo | doc:appunti:hardware:raspberrypi_nas [2021/03/31 17:13] – [Home Mediacenter and NAS with the Raspberry Pi] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Home Mediacenter and NAS with the Raspberry Pi ====== | ====== Home Mediacenter and NAS with the Raspberry Pi ====== | ||
- | This is my recipe to build a mediacenter and NAS box using the Raspberry Pi. This is the list of components: | + | This is my recipe to build a **[[wp> |
- | * Raspberry Pi 4. | + | |
- | * Seagate IronWolf 3.5 inch Hard disk, 4 Tb. | + | |
- | * Suptronics.com X835 exapnsion board to connect | + | |
+ | * Ugreen **USB audio** adapter. | ||
+ | * **Gamepad** USB wireless (SNES-like) used as remote control. | ||
+ | {{.: | ||
+ | |||
+ | {{.: | ||
+ | **WARNING** :!: It turned out that the **Raspberry Pi 4**, when it uses the **USB 3** interface, produces **radio interferences on the 2.4 GHz** band. It is **impossibile to connect to the 2.4 GHz WiFi** access point which is only 5 meters far. It was also **impossible to use a wireless keyboard and mouse**, using one USB dongle which also operates on the 2.4 GHz. To operate a **wireless gamepad** (which also uses an USB dongle on the 2.4 GHz frequencies) I had to distantiate the dongle from the Raspberry Pi using and USB **extension cable of about 0.5 meters**. Due this **severe problem**, I can suggest the RPi4 solution only if you will use the **Ethernet** interface or an access point on the **5 Ghz** band. As an alternative to the wireless gamepad or keyboard, you can use the **[[https:// | ||
+ | |||
+ | {{.: | ||
+ | **WARNING** :!: There is another potential problem with the **Raspberry Pi 4**: due the increased CPU power, the designers decided to drop the **H263** and **MPG4** codecs from the hardware. That codecs were enabled in-hardware into the older Raspberry Pi models and the license price were included into the hardware price. In older models you could also purchase additional licenses, e.g. for **MPEG2** and **VC-1**; this is no longer an option on the Raspberry Pi 4. My experience is not satisfying with sofware decoding of MPEG4 streams (e.g. some produced by the XviD library): whereas the LibreELEC distribution is smooth enough, the RaspiOS one produces **unacceptable jerky video playback**. | ||
====== Subsystems ====== | ====== Subsystems ====== | ||
Line 15: | Line 24: | ||
* **[[raspberrypi_nas_audio]]** | * **[[raspberrypi_nas_audio]]** | ||
* **[[raspberrypi_nas_mail]]** | * **[[raspberrypi_nas_mail]]** | ||
- | + | * **[[raspberrypi_nas_remote_control]]** | |
- | + | * **[[raspberrypi_nas_case]]** | |
- | ===== Mail system ===== | + | |
- | + | ||
- | I want a working **mail system** on the NAS, mainly because I want to eventually receive error messages from the various subsystems, think e.g. at the **smartd** daemon watching for S.M.A.R.T. hard drive errors... | + | |
- | + | ||
- | In the following examples **pimedianas** is the hostname of my Raspberry Pi Mediacenter NAS. I istalled the **postfix** package and configured it as **satellite system** using a **SMTP relay host**. The relevant settings in **/ | + | |
- | + | ||
- | < | + | |
- | myhostname = pimedianas | + | |
- | mydestination = $myhostname, | + | |
- | relayhost = mail.example.org: | + | |
- | default_transport = smtp | + | |
- | relay_transport = smtp | + | |
- | myorigin = $myhostname | + | |
- | # Rewrite some sender addresses. | + | |
- | sender_canonical_maps = hash:/ | + | |
- | # Relay host requires SASL authentication. | + | |
- | smtp_sasl_auth_enable = yes | + | |
- | smtp_sasl_password_maps = hash:/ | + | |
- | smtp_sasl_mechanism_filter = plain, login | + | |
- | smtp_sasl_security_options = | + | |
- | smtp_tls_security_level = may | + | |
- | </ | + | |
- | + | ||
- | The content of **/ | + | |
- | + | ||
- | < | + | |
- | root | + | |
- | root@pimedianas | + | |
- | root@localhost | + | |
- | root@localhost.localdomain pimedianas@example.org | + | |
- | </ | + | |
- | + | ||
- | Write the proper info about **localhost** in **/ | + | |
- | + | ||
- | < | + | |
- | 127.0.1.1 | + | |
- | </ | + | |
- | + | ||
- | Finally I had to put my **SMTP credentials** required by the relaying server into **/ | + | |
- | + | ||
- | < | + | |
- | mail.example.org pimedianas: | + | |
- | </ | + | |
- | + | ||
- | Last but not least, I redirected all the mail for root to my real email address in **/ | + | |
- | + | ||
- | < | + | |
- | root: | + | |
- | </ | + | |
- | + | ||
- | Remember to compile all the files and restart the service: | + | |
- | + | ||
- | < | + | |
- | postmap / | + | |
- | postmap / | + | |
- | newaliases | + | |
- | systemctl restart postfix.service | + | |
- | </ | + | |
- | + | ||
- | Now all the locally generated mails addressed to **root**, **%%root@pimedianas%%**, | + | |
- | + | ||
- | ===== Kodi ===== | + | |
- | + | ||
- | Installed the packages: | + | |
- | + | ||
- | * **kodi** | + | |
- | * **kodi-bin** - Contains the executable **kodi-standalone**, | + | |
- | * **kodi-peripheral-joystick** - Necessary to add support for the gamepad. | + | |
- | * **kodi-eventclients-kodi-send** - Contains the **kodi-send** tool, used to control Kodi from the command line. | + | |
- | + | ||
- | We create an user called **kodi** which belongs to the groups: **audio**, **video**, **input**, **pulse** and **pulse-access**. To execute kodi as a Systemd service we created an Unit file **/ | + | |
- | + | ||
- | < | + | |
- | [Unit] | + | |
- | Description = Kodi Media Center | + | |
- | + | ||
- | # if you don't need the MySQL DB backend, this should be sufficient | + | |
- | After = systemd-user-sessions.service network.target sound.target | + | |
- | + | ||
- | # if you need the MySQL DB backend, use this block instead of the previous | + | |
- | # After = systemd-user-sessions.service network.target sound.target mysql.service | + | |
- | # Wants = mysql.service | + | |
- | + | ||
- | [Service] | + | |
- | User = kodi | + | |
- | Group = kodi | + | |
- | Type = simple | + | |
- | ExecStart = / | + | |
- | Restart = always | + | |
- | RestartSec = 15 | + | |
- | + | ||
- | [Install] | + | |
- | WantedBy = multi-user.target | + | |
- | </ | + | |
- | + | ||
- | The service must be enabled and started. | + | |
- | + | ||
- | ===== Kodi Add-ons ===== | + | |
- | + | ||
- | We don't want to depend on auto-download, | + | |
- | + | ||
- | Despite installing the add-on from a zip file, any **required add-ons** not present into the system will be automatically downloaded from the net and installed. Fortunately you can find the zip files of this additional add-ons into the **$HOME/ | + | |
- | + | ||
- | + | ||
- | ===== Music ===== | + | |
- | + | ||
- | Beside Kodi, which has its own functions to play music, I want also the functions offered by the **[[https:// | + | |
- | + | ||
- | * **mpd** - The Music Player Daemon, the underlying daemon which actually plays music. | + | |
- | * **ncmpc** - It is a MPD client for text terminals, based on ncurses. | + | |
doc/appunti/hardware/raspberrypi_nas.txt · Last modified: 2021/04/02 15:47 by niccolo