Dreambox 800 HDSE setup & configuration¶
Table of Contents
- Full basic install of common libraries
- User specific upgrades
- Swap space
- Debugging issues on your dreambox
- Common directories and locations for your dreambox
- Change the root password
- Setup SSH key’s for password-less access
- Install bash shell
- CrossEPG not working or downloading EPG listings
- How to mount a NTFS USB HDD to your dreambox
- Install OpenSSH SFTP server
- Install a samba server
- Install rsync
- Copying files
This is a guide for setting up and maintaining a dreambox satellite set top box.
A dreambox runs a small subset of Linux called busybox. Unlike a full blown linux installation, busybox is built for embedded devices and so has a much slimmer set of pre-installed tools.
When managing software on a busybox embedded system you have to be careful not to use up all the internal flash storage memory. In this post, we manage to install all our required packages, and still keep several megabytes free.
I installed everything below on a fresh OpenPLI image, the full install consists of pretty much everything you’ll need on your Dreambox, after the install we still have a whopping 7.6mb free!
Free Space after fresh OpenPLi 4 Install:
# `df -h` straight after a fresh OpenPLi Install Filesystem Size Used Available Use% Mounted on /dev/root 60.0M 46.7M 13.3M 78% /
Free Space after full install (everything below) + reboot (important!):
# `df -h` after installing everything below Filesystem Size Used Available Use% Mounted on /dev/root 60.0M 50.1M 7.6M 84% /
Considering how much we are installing, I think that’s a result!
You could increase this further by removing the OpenSSH install if you’re happy with dropbear, this should leave you around 9mb free.
Create a file called setup.sh on your Dreambox in your /tmp directory and give it executable permissions.
cd /tmp/ touch /tmp/setup.sh chmod +x /tmp/setup.sh
Paste the below contents into this file, make sure the #!/usr/bin/env bash is the first line in the file setup.sh, this is the shebang and tells Linux which interpreter to use when executing this file.
#!/usr/bin/env bash # Show our disk usage before we start echo && df -h # We could do a opkg update && opkg upgrade enigma2 && reboot # then continue with the script, we can update enigma2 # Basic Config for UK (HDMI, 1080i, ac3 false, sat simple single) #cat <<EOF >> /etc/enigma2/settings # Removed - causes issues with multiple boxes #EOF # Change the Hostname echo "Anil-DM800HDSE" > /etc/hostname # Change the default password passwd # Install all basics opkg update && opkg install curl rsync bash libcurl4 libfuse2 kernel-module-fuse \ sambaserver openssh-sftp-server enigma2-plugin-systemplugins-crossepg enigma2-plugin-softcams-cccam # Install transmission (torrent client) # TODO - Write up transmission config opkg install transmission # Switch our default shell chsh -s `which bash` # Create our .bash_profile cat <<EOF >> ~/.bash_profile # Custom Bash Profile Commands alias ls='ls -alh' # Better ls output HISTCONTROL=ignoreboth:erasedups # no duplicates HISTIGNORE='vim:vi:ls:bg:fg:history:exit' # Ignore other HISTIGNORE=' *' # Ignore all commands starting with a space EOF # Create our ssh config file (Forward our agent for all hosts) mkdir -p ~/.ssh/ cat <<EOF >> ~/.ssh/config Host * ForwardAgent yes EOF # Remove all other languages (backup en, delete all, copy en back) cp -a /usr/share/enigma2/po/en /tmp/ rm -rf /usr/share/enigma2/po/* cp -a /tmp/en /usr/share/enigma2/po/ # Remove all other language icons cp -a /usr/share/enigma2/countries/en.png /tmp/ cp -a /usr/share/enigma2/countries/missing.png /tmp/ rm -rf /usr/share/enigma2/countries/* cp -a /tmp/en.png /usr/share/enigma2/countries/ cp -a /tmp/missing.png /usr/share/enigma2/countries/ # User Specific # Add a custom host to our hosts file for the DM's echo "192.168.1.10 dm1" >> /etc/hosts echo "192.168.1.20 dm2" >> /etc/hosts # Echo a blank line and our disk usage before the reboot echo && df -h reboot && exit
# All in one opkg --force-remove remove dropbear && opkg install openssh openssh-misc enigma2-plugin-extensions-screengrabber enigma2-plugin-extensions-autobouquets-e2 enigma2-plugin-extensions-httpproxy enigma2-plugin-extensions-openwebif # Individually # Remove dropbear for OpenSSH opkg --force-remove remove dropbear opkg install openssh openssh-misc # After reboot your can optionally install other user specific libs # Install Other apps opkg install enigma2-plugin-extensions-screengrabber opkg install enigma2-plugin-extensions-autobouquets-e2 opkg install enigma2-plugin-extensions-httpproxy # Upgrade OpenWebIf opkg upgrade enigma2-plugin-extensions-openwebif
A Swap file is not required, it will do more harm than good, If you need swap space, (cat /proc/meminfo), you should have a look at your installed plugins and what’s hogging your processor and memory.
Here’s an example of setting up a custom swap space partition.
# Do this only if you are adjusting swapfile size, adjust this to where you have a swapfile at the moment if any /sbin/swapoff /hdd/swapfile # adjust /hdd to where the device is mounted that you want the swapfile on; adjust count=32 to size of swap in MB /bin/dd if=/dev/zero of= /hdd/swapfile bs=1048576 count=32 /sbin/mkswap /hdd/swapfile /sbin/swapon /hdd/swapfile
You can run the following command on your Dreambox (through telnet or ssh) to restart your box and log everything happening to your screen, this can help immensely in debugging problems with your DM.
init 4; sleep 4; enigma2;
These are some of the common locations you may use whilst administering your Dreambox.
# Plugins /usr/lib/enigma2/python/Plugins/Extensions/ # Global Settings - (a File) /etc/enigma2/settings # Skins /usr/share/enigma2/ # Delete unused languages /usr/share/enigma2/po/
The very first thing to do after installing a new image is to change the root password, you can do this using:
You’ll be prompted to change the password of whoever you are logged in as.
You can setup SSH keys between your devices so you can log into your machine without a password.
# Create an SSH keypair (save it into ~/.ssh/dreambox) ssh-keygen # Add that keypair to your identity file ssh-add ~/.ssh/dreambox # Next, copy the public ssh key to your box's authorized_keys file cat ~/.ssh/dreambox.pub | ssh email@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # Now you should be able to ssh into your box without a password ssh firstname.lastname@example.org
You may also want to setup an SSH key between 2 Dreamboxes. OpenPLi uses dropbear as it’s SSH client and so has some quirks in it’s usage compared to OpenSSH, mainly that you have to provided the identity file when connection (it does not find it like with OpenSSH).
You can configure a dropbear SSH key like so:
# We need to convert our dreambox key to a dropbear format dropbearconvert openssh dropbear dreambox dreambox.db # The other host already has this key in their authorized_keys file ssh -i ~/.ssh/dreambox.db email@example.com # You can setup a alias in your `.bash_profile` to make things easier alias ssh='ssh -i $HOME/.ssh/dreambox.db' # You can also add an entry in your `/etc/hosts` file to clean it up further 192.168.1.20 dm2 # Now to connect.. (from one box to another) ssh root@dm2
I like using Bash shell over the default Bourne Shell (sh) provided in OpenPLi, you can install this using:
# Install Bash opkg install bash # Make Bash the default for the current user chsh -s `which bash` # Logout and log back in # You can now create a ~/.bash_profile file to hold your configuration cat <<EOF >> ~/.bash_profile # Custom Bash Profile Commands alias ls='ls -alh' # Better ls output HISTCONTROL=ignoreboth:erasedups # no duplicates HISTIGNORE='vim:vi:ls:bg:fg:history:exit' # Ignore other HISTIGNORE=' *' # Ignore all commands starting with a space EOF
I’ve found that after a clean install of OpenPLi 4, I couldn’t get CrossEPG to work with the Sky UK EPG (I can get Rytec feeds to work). After a little debugging (using the debug command above), I found this was down to libcurl4 not being installed.
# Install CURL to fix CrossEPG issues opkg install libcurl4 # If you haven't already, install CrossEPG opkg install enigma2-plugin-systemplugins-crossepg
After installing libcurl4 go back to the CrossEPG download menu and try another download.
Plug your USB device in and run the following command sfdisk -l, you should see all the partitions of the detected devices.
Your USB devices will most probably be under /dev/sdb1, /dev/sdb2.
Read more info here on auto mounting: http://unix.stackexchange.com/questions/72393/mounting-all-partitions-on-hard-disk-automatically-on-linux-mint
You can mount your USB device/HDD using:
# /dev/sdb1 - The drive your mounting # /mnt/usb1 - Where you want to mount it to (directory must exist) mount -t ntfs /dev/sdb1 /mnt/usb1
I had the following error when trying to mount a USB NTFS drive using OpenPLi 4:
modprobe: FATAL: Module fuse not found.
I solved it by installing the packages kernel-module-fuse and libfuse2.
opkg install libfuse2 kernel-module-fuse
After this you should be able to just restart your Dreambox and the drives should auto mount into /mnt/DRIVE_NAME. If it does not you can manually mount it using the above command.
The /mnt/usb1 directory should exist, if it does not you will see the following error.
ntfs-3g-mount: failed to access mountpoint /media/usb1: No such file or directory mount: mounting /dev/sdb1 on /media/usb1 failed: No such file or directory
If you want to SFTP to your box to copy files amongst other things, you’ll need to install an SFTP server, you can install this using:
opkg install openssh-sftp-server
Now you should be able to SFTP to your box, the standard port to connect to is 22, username root (or another user if you created one), and password dreambox (default).
You can install a samba server using:
opkg install sambaserver
After installation you can edit /etc/samba/smb.conf to add your own servers.
$ vi /etc/samba/smb.conf # Example [USB] comment = External USB HDD path = /media/SAMSUNG writable = yes valid users = root read only = no public = no guest ok = no
rsync is awesome, I wish it was bundled with the OpenPLi installation. Luckily you can install it easily using:
# Install rsync opkg install rsync
Example shell script using it:
#!/bin/sh # rsync [-options] [source] [dest] # -a : archive mode, archive mode allows copying files recursively and it also preserves symbolic links, file permissions, user & group ownerships and timestamps # -z : compress file data # -v : verbose # -h : human-readable, output numbers in a human-readable format # -r : indicates recursive # -P : equivalent to --partial --progress # -n, --dry-run perform a trial run with no changes made # View `rsync --help` on your own box for more options (copy symlinks, etc..) # `Directory` has `file1.txt, file2.txt, etc..` # Note: I have removed the `-z` (compression) flag when copying locally # Will copy the CONTENTS of `Directory` (but not the directory itself) into `LocalDirectory` rsync -avhrP "/media/EXTUSB/Directory/" "/media/hdd/movie/LocalDirectory/" -n # `LocalDirectory` will now contain `file1.txt, file2.txt, etc` # Notice no trailing slash `/` after `Directory` # Will copy the DIRECTORY ITSELF (and recurse `-r`) into `LocalDirectory` rsync -avhrP "/media/EXTUSB/Directory" "/media/hdd/movie/LocalDirectory/" -n # `LocalDirectory` will now contain `Directory` (which is a directory) that contains `file1.txt, file2.txt, etc`
You can also copy files and directories using the traditional Linux shell command cp. You should stick with rsync, it only copies the changed files and also gives you progress information, if your getting slow speeds copying locally (using rsync), make sure you remove the z (compression) flag from the rsync command.
# Usage: cp [OPTIONS] [SOURCE] [DEST] # `-a` (Same as -dpR) -d = Preserve symlinks, -p = Preserve file attr, -r = Recurse # Copy the directory from the externally mounted HDD to the internal dreambox HDD cp -a "/media/EXTUSB/Directory" "/media/hdd/movie/" # `movie` now contains `Directory` (with all it's files)