hd-homerun-prime[Editors Note]  I actually wrote this blog back in June of 2014, but for whatever reason, never posted it.  It’s not complete, but I figured I’d share it with the Internet anyway.  I may come back and finish this at some point, but right now, I just don’t have the time.  Also the script below has evolved a bit over time, so I may update that to reflect what I have currently. 

A bit of a long story here, but recently I had decided to cut the cord on my TV service and called my local cable provider.  In my attempt to cancel only my TV service and not my internet service, they managed to talk me into a TV plan that was actually cheaper than what I was paying before and just a couple bucks more expensive than internet service alone.  That and a few other online streaming perks too.  I took the bait and they promptly sent me a new set top box so that I could watch more TV.

Unfortunately, when that new set top box arrived, I was promptly disappointed due to the fact that it was standard definition, slow and quite bulky in the entertainment center.  Obviously, there was no PVR capability either meaning it was only serving content to one TV in the house.  Not ideal really.  I started the search for something better.

As some of you know, I previously had setup SickBeard and SabNZBd for instructional purposes on this site before which is a perfectly capable system if you are OK with the legality of it – however it definitely gulps the bandwidth (or so I’ve heard).  So perhaps a better solution would be to record these shows from your own DVR box.  There are a lot of options for going this route, but I had previously come across something called the HDHomerun, which basically hooks up to your internal network, and your cable and will stream HD MPEG2 streams to whatever computer you wish.  It’s a really neat device.

Software

Let’s talk about software.  There is a lot to talk about here so let’s break it down into functionality.  Basically, what I want first and foremost is a PVR (or DVR, or whatever the heck you want to call it).  As a secondary project, I’d really love to have the capability to pipe live TV streams to my Roku.  I’ll save the secondary stuff for a future post (plus I haven’t had time to really tinker with this yet).

After a considerable amount of searching around for PVR solutions that run on Linux I found only two real potential options for me.  Because, as some of you may already know, I have an Ubuntu 12.04 server sitting on my network doing all kinds of NAS-like stuff, it just made sense to also use this as a backend PVR.  The two major players in this space are:

TVHeadend:  This solution is actually downright perfect for me because it is a pure web gui based solution with little overhead, easy (well not quite, as I would soon find out) setup, with a nice interface.  Unfortunately, after hours of banging my head against the wall getting this setup, I found that there is a fundamental issue how the Prime works that current prevents content from being accessed via the DVB drivers and TVHeadend.  While you can scan for stations perfectly well, the content just won’t come through because each channel is encrypted (not flagged for content protection, but digitally encrypted via the cable card).  As I understand it, there are potential fixes in the works for TVHeadend and the related DVBHDHomerun drivers/shim, but it could be some time before something gets developed.  I’m not holding my breath.

MythTV:  This is the solution that I eventually ended up with.  And it’s not without a fair amount of pain.  Quite frankly, I’m still trying to get this all tweaked and setup correctly.  For anyone who knows MythTV, it’s a pretty clumsy implementation of a PVR (apologies to all those people out there that work hard to bring this to the public).  Much of the pain that I experienced was self imposed, because of my unique setup, but there are some clear improvements to the usability of MythTV setup etc.

Getting MythTV setup and configured is a long process, but it’s definitely worth it once you get things going.  I had lot’s of help from various forums and contributors to the MythTV wiki – and piecing these together was a huge help to me.

With my configuration, it was important to me to be able to run MythTV headless with a Web based UI because I’m running this entirely on my Ubuntu 12.04 LTS headless NAS.  This is a bit difficult since the MythTV setup is graphical (X-Based) and requires X to be installed on the system.  Side note to MythTV developers: Why the heck do we need this to be graphical?  Can we just use a text based setup?  Many people, just like me, will thank you for making it easier for us to get the backend setup on a headless server.  Anyhow, there is a neat little workaround for this if you have another Linux machine on your network to get things running.  From that other machine do this from the terminal:

ssh -X mythtv@yourservername mythtv-setup

With this, no X-server is necessary on your headless box.  One caveat was that on my Ubuntu 13.10 box the screen is shifted such that the buttons on the bottom of the screen are obscured, also my mouse is not really visible.  It’s still usable though, with the arrow keys.

But before you get there, there are basic steps to setup.  Follow instructions here to get drivers for HDHomerun, setup and scan channels etc. and get all pre-requisites setup.  And, take my advice, sign up for schedules direct.  If you’re serious about this being set up properly, then spend the $25 and just do it.  Seriously, don’t try to cheap out on this one.  Time is money… and this will save you bundles of time.

My rig still had issues after getting things setup.  For one, my database password is broken.  So anytime I try to log in to mythtv-setup with the command above, it prompts me for a password.  Despite trying to setup a password manually, wiping and starting from scratch, I still can’t get a password setup correctly.  So after three incorrect password attempts it still let’s me into setup and I can still configure everything just fine.  As far as I can tell, the password is just an inconvenience.  Hopefully that doesn’t change someday and lock me out.

Mythweb was interesting to setup, since I already had a web server running on my system.  I ended up simply copying the Mythweb files over to my web server root and then everything seemed to just work.  Neat.

User Job Scripts

After getting MythTV up and running, I wanted to play with the user job scripts to try and do some fancy things. I wanted to try to run the commercial flagging, removal, transcoding, renaming and moving to Plex.

Again, after hours of much pain, I finally ended up with a script that will transcode, rename and move the transcoded copy of the file to Plex.  Why did I skip the commercial flagging?  It’s unreliable.  And with my limited testing, the flagging was not working well, skipping portions of the actual programming.  In order to actually cut the commercials, you need to use the mythtv transcoding tool which for some odd reason seemed to introduce errors in my files.  It was a bust from the start.  Maybe some day I will try it again, but for now, I’ve removed it from my script.

My script is currently pretty simple.  Here’s the general flow:

1. Creates a temporary directory under your recordings directory for the show it is about to transcode.

2. Uses Handbrake (could be modified to use ffmpeg or other transcoder, but I chose this out of simplicity) to transcode the original, very large MPEG2 format file to a smaller, more manageable H.264 mp4 file (which can be streamed to my Roku boxes).

3. Uses Filebot to rename the file and add the season number and episode number (sXXeXX).  I do this because it makes it much smoother for the last step to occur without issues.

4. Uses the Sickbeard script, sabtosickbeard.py, which is normally used by SabNZBd to organize your downloaded files into directories, and notify Sickbeard / Plex of the new show.  This will also rename your file… again.  You may be wondering why I use Filebot at all in step 3?  Well, the Sickbeard script seems to do better at recognizing the file if it already has a season number and episode number in the file name.  The script also cleans up for you by deleting the temporary folder after it’s moved the file.  Very nice!

What the script does NOT do.  My script doesn’t have any debug output.  My script does not remove the original file from MythTV recordings, or the database.  You’ll have to manually go delete things.  This is intentional, just in case things don’t go well, at least you have the backup.  Every so often you can manually clean up the recordings folder if you’re running low on space.


#!/bin/sh

#******************************************************************************
#******************************************************************************
#
# Myth > Handbrake (H.264) > Plex Script++ for MythTV
#
#******************************************************************************
#******************************************************************************
#
# Pre-requisites:
# HandBrakeCLI
# Filebot (portable edition)
# Sickbeard w/sabtoSickBeard.py
#
#
# Usage:
# 'mythtoplex.sh %DIR% %FILE% %CHANID% %STARTTIME% "%TITLE%" "%SUBTITLE%"'
#
# Description:
# My script is currently pretty simple. Here's the general flow:
#
# 1. Creates a temporary directory under your recordings directory for
# the show it is about to transcode.
#
# 2. Uses Handbrake (could be modified to use ffmpeg or other transcoder,
# but I chose this out of simplicity) to transcode the original, very
# large MPEG2 format file to a smaller, more manageable H.264 mp4 file
# (which can be streamed to my Roku boxes).
#
# 3. Uses Filebot to rename the file and add the season number and
# episode number (sXXeXX). I do this because it makes it much smoother
# for the last step to occur without issues.
#
# 4. Uses the Sickbeard script, sabtosickbeard.py, which is normally used
# by SabNZBd to organize your downloaded files into directories, and
# notify Sickbeard / Plex of the new show. This will also rename your
# file... again. You may be wondering why I use Filebot at all in step 3?
# Well, the Sickbeard script seems to do better at recognizing the file if
# it already has a season number and episode number in the file name. The
# script also cleans up for you by deleting the temporary folder after
# it's moved the file.
#
#******************************************************************************

#******************************************************************************
# Edit the following for your system
#******************************************************************************

TEMPDIR="/mnt/dionysus/mythtv/recordings/tmp" # Temporary directory for transcoding
SBSPATH="/home/parmeter/.sickbeard/autoProcessTV" # Path to sabToSickBeard.py
FBPATH="/home/parmeter/filebot" # Path to filebot.sh (from portable edition)
SED="/bin/sed" # Path to sed (Stream Editor)

#******************************************************************************
# Do not edit below this line
#******************************************************************************

VIDEODIR=$1 # %DIR% - Directory name of original file
FILENAME=$2 # %FILE% - Filename of original file
CHAN=$3 # %CHANID% - Channel ID for the recorded program - Reserved for future use
START=$4 # %STARTTIME% - Start time of the recorded program - Reserved for future use
TITLE=$5 # %TITLE% - Program Title
SUBTITLE=$6 # %SUBTITLE% - Program Subtitle

MYPID=$$ # Process ID for current script

echo "********************************************************"
echo "********************************************************"
echo " MythTV to Plex > Transcode and Organize"
echo "********************************************************"
echo "********************************************************"

# Adjust niceness of CPU priority for the current process
renice 19 $MYPID

# Convert space laden variables to have underscores instead (not used in lookup)
sed_str="s/[$\!@\/:;~#%^&*\`\(\)\"\'<>,.?]//g"
OTITLE=`echo $TITLE | $SED -e 's/[[ \t]]*/_/g' | $SED -e $sed_str`
OSUBTITLE=`echo $SUBTITLE | $SED -e 's/[[ \t]]*/_/g' | $SED -e $sed_str`
OUTFILE="$OTITLE-$OSUBTITLE.mp4"

# Make temporary directory TEMPDIR/OTITLE
mkdir $TEMPDIR/$OTITLE

echo "********************************************************"
echo "Transcoding, Converting to H.264 w/Handbrake"
echo "********************************************************"

HandBrakeCLI -i "$VIDEODIR/$FILENAME" -o "$TEMPDIR/$OTITLE/$OUTFILE" --audio 1 --aencoder copy:aac --audio-fallback faac --audio-copy-mask aac --preset="Universal"

# First Pass: FileBot
echo "********************************************************"
echo "Rename with FileBot... $OUTFILE"
echo "********************************************************"
# Filebot may fail if permissions are set correctly.
# 1. Make sure Filebot is executable by the mythtv user
# 2. Make sure Filebot's cache folder permissions are writable by the mythtv user
$FBPATH/./filebot.sh -rename "$TEMPDIR/$OTITLE/$OUTFILE" --format "{n}-{s00e00}-{t}" --db tvrage -non-strict

# Second Pass: SickBeard
echo "********************************************************"
echo "Sending to SickBeard for proper organization w/Plex"
echo "********************************************************"
# Set permissions so SickBeard doesn't fail (ymmv)
chmod -R 777 $TEMPDIR/$OTITLE/
# Execute script on the temporary directory
# This script may fail if permissions aren't set correctly
# 1. Make sure this script is executable by the mythtv user
# 2. Make sure that the source and destination folders are writable by the sickbeard script owner/user
python $SBSPATH/sabToSickBeard.py $TEMPDIR/$OTITLE/

echo "Done. Congrats!"

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

I’ve discovered the wonderful world of single board computers.  More specifically, Raspberry Pi and the universe of different models and stuff that goes along with them.  I was first inspired to buy one for a garage door opener project, but I will get to that one a little bit later.  After I have enough time to put my thoughts into words, that is.

 

I’ve now gotten three different little Raspberry Pi computers in my house.  Two of which I have already put to work doing something useful and one that I’m still tinkering with.  I also picked up the Pine64 single board computer from their kickstarter campaign, but haven’t had much time to put it through its paces.  Frankly, it’s impressive, but not as mature as the Raspberry Pi.  I never thought I would be enjoying these little $35 boards so much, but darn it if they aren’t scratching some kind of latent nerdy itch that I have deep down inside.  

 

With that said, I’m going to have a few posts landing here in the (hopefully) near future, that document some of my projects / tinkering with this mini-powerhouses.  A sampling of what’s to come?  As mentioned before, the garage door opener project (my first), Raspberry Pi as an OpenVPN server, and more!  

 

As always, stay tuned.  

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

Recently, I noticed that one of my mount points (the one with all my recorded TV and movies) was starting to fill up.  I scanned the web for cheap WD Red drives and finally settled on a nice shiny new 4TB drive.  After I received the new drive, I thought for a few days on how I could transfer the data and perhaps even pool the storage to maximize my new space.  So after much reading, I finally eschewed the idea of using BtrFS (too unstable) and ZFS (not-native) and just decided to use LVM (built into Ubuntu Server 14.04.2).

Configuration notes:

  • Existing Drive (old) @ /dev/sdb
  • New Drive @ /dev/sdc
  • Mount Point Name: ‘dionysus’ (this could be whatever you want)

 

Without further adieu, after installing the new hardware and booting up here is what I did:

First find the drive:

sudo lshw -C disk

Partition the drive (use gdisk for large disks over 2TB – I had to install it manually):

sudo apt-get install gdisk

sudo gdisk /dev/sdc

At the prompts, type n to create a new partition, 1 to assign it partition number 1, Enter to accept the default starting cylinder, and Enter to set the size. Then type t to set the partition type. LVM partitions are type 8e00, so enter it at the prompt. Finally, type w to write the new partition table to the disk.

You can check your work with:

sudo gdisk -l

Create Physical Volume in LVM:

sudo pvcreate /dev/sdc1

Double-check with:

sudo pvdisplay

Create Volume Group named ‘dionysus’ (I append vg or lv to the front of volume groups or logical volumes so I can keep the naming straight):

sudo vgcreate vg_dionysus /dev/sdc1

Double-check with:

sudo vgdisplay

sudo pvdisplay

Create LV Group

sudo lvcreate --name lv_dionysus --size 100%FREE vg_dionysus

Double-check with:

sudo lvdisplay

Format the Logical Volume

sudo mkfs -t ext4 /dev/vg_dionysus/lv_dionysus

Make a temporary mount point

sudo mkdir /mnt/temp_dionysus
sudo mount -t ext4 /dev/vg_dionysus/lv_dionysus /mnt/temp_dionysus

Copy files from old drive to new:

sudo rsync -avrtP /mnt/dionysus/ /mnt/temp_dionysus/


Unmount the old drive (may just need to remove from fstab and reboot):

sudo umount /mnt/dionysus

Partition the old drive:

sudo gdisk /dev/sdb

At the prompts, type d to delete a partition (type p to see partitions).  Enter 1 to delete partition one(/sdb1).  type n to create a new partition, p to make it primary, 1 to assign it partition number 1, Enter to accept the default starting cylinder, and Enter to set the size. Then type t to set the partition type. LVM partitions are type 8e, so enter it at the prompt. Finally, type w to write the new partition table to the disk.

You can check your work with:

sudo gdisk -l

Create Physical Volume in LVM:

sudo pvcreate /dev/sdb1

Double-check with:

sudo pvdisplay

Add the old drive to the volume group with the extend command:

sudo vgextend vg_dionysus /dev/sdb1

Double-check with:

sudo vgdisplay

Resize the logical volume:

sudo lvextend -l +100%FREE /dev/vg_dionysus/lv_dionysus

Resize the filesystem to expand to the full size of the logical volume

sudo resize2fs /dev/vg_dionysus/lv_dionysus

Open fstab:

sudo nano /etc/fstab

Then append [use nomenclature (/dev/mapper/vgname-lvname)]:

/dev/mapper/vg_dionysus-lv_dionysus /mnt/dionysus ext4 defaults 0 0

Save and exit.

Test by mounting all:

sudo mount -a

There you go, back in business with a big, new drive with all your old stuff on it.  I hope this helps someone trying to do the same.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

So I’m logging into my Ubuntu 12.04 server today and I get the following message:

/boot is using 96.4% of 249MB

I really didn’t think too much of it, except that gosh, that’s almost full.  Oh well.  I went on with my usual maintenance which includes installing new packages, and doing a dist-upgrade (which installs a new set of linux headers and a new kernel).  Unfortunately, this time, I got a bunch of errors when trying to install the new kernel and headers.  Presumably because my /boot partition was already too full.

After some poking around I discovered this forum post which lead me to the resolution.  What was happening was that every time I had done a dist-upgrade, to upgrade the Linux kernel, Ubuntu wasn’t removing the old kernel.  Ubuntu studiously archives those older kernels so that you can boot into them if anything were to go bad when booting into your new kernel.  So I ended up having a boatload of older kernels archived which caused my partition to fill up and prevented me from adding any new kernels.  Lucky for me, the internet knows how to fix this.

First SSH into your Ubuntu server and determine what kernel you are currently running

uname -r

To which it responds:

3.2.0-36-generic

Then, we need to get a list of kernels that you currently have installed.

sudo dpkg --list 'linux-image*'

This is going to spit out something that looks like this:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
un linux-image <none> (no description available)
un linux-image-3. <none> (no description available)
ii linux-image-3. 3.2.0-20.33 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-27.43 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-31.50 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-32.51 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-33.52 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-35.55 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-3. 3.2.0-36.57 Linux kernel image for version 3.2.0 on 64 b
ii linux-image-se 3.2.0.36.43 Linux kernel image on Server Equipment.

You’ll now want to walk down the list and begin removing them one by one.  So for each of the kernels (Important Note: DO NOT REMOVE YOUR CURRENT KERNEL) do this:

sudo apt-get remove linux-image-3.2.0-20-generic

After running this command you’ll be asked if you want to proceed (Y/n), which you’ll probably want to respond with a resounding ‘Y’.  Repeat this until you have removed all but the current kernel and perhaps even the previous kernel for backup purposes.  I removed all the way up through kernel 3.2.0-33, opting to keep 35 just in case.

And that’s it.  All is right with the world once again.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

PSA: Hurrah for the internet again!  I’m the recent owner of a new vehicle with Bluetooth integration in the stereo system.  While I was eager to get everything up and running, connecting my Android smartphone to my car, it wasn’t without a hitch.  Hilariously, each time I started the car the Bluetooth would connect and start playing music from my phone with no interaction from me at all.  Strangely enough, this feature doesn’t automatically route the audio to the speakers in the car – and instead will default to whatever you were listening to prior (like radio, or satellite or CD, etc.).  In those situations, my phone is happily playing random music in my collection, but I may be completely unaware of this.  Not great for battery life on a smart phone to say the least.

Just speculation on my part, but it seems that these car stereo units are developed such that they will effectively press the “play” button to connect to your device initially.  Unfortunately, for us Android users, this gets immediately routed to the app that is currently handling the Bluetooth media buttons.  Your app will likely dutifully do as told and start playing Slayer at full volume on your device.

After a brief search, I stumbled across a few smart individuals on the Android forums who discovered a free app that is perfectly suited to solve the problem.  It’s called Media Button Router (Google Play Link) and unsurprisingly does exactly as it’s title suggests.  The app will, instead of routing the button press directly to the default music application, it will let you choose which application you’d like to route it to.  And if you don’t select one in a certain period of time (this is easily modifiable in the settings) it will default to ignore the button press altogether.  Problem solved.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

Finally… I got around to researching a little issue that had been bothering me ever since I installed Ubuntu 12.04 back in April.  Watching videos, flash or otherwise would suffer from frequent skipping (or stuttering) of both the audio and video.  Previously I searched for a solution by searching for “video” stuttering, found some interesting articles that pointed to the nVidia graphics drivers.  But after a few hours of fiddling, nothing seemed to work.

Then, today, I finally got fed up enough to do another search.  This time I searched for stuttering “audio” and I found the holy grail, the fix!  As usual, the Ubuntu forums came to the rescue.

As it turns out, my Intel motherboard audio device may have been incorrectly recognized by Ubuntu and the audio driver may have been having issues.  So here’s how to fix it…

Open a terminal window and type:

sudo nano /etc/modprobe.d/alsa-base.conf

Scroll to the end of the file and then add the following:

options snd-hda-intel model=generic

Press “Ctrl-O” to write to the file then “Ctrl-X” to exit.

That’s about it.  I required a reboot to get it to work, but others mileage may vary.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

Welcome to the parmeter.net tech blog.  The site has actually been live for a couple of weeks now, but lacking any actual substance. I’ve since transferred my techy type posts from my personal blog and spiffed up the place a bit.  I hope you enjoy the new tech dedicated site.  We’ll see how this goes.

For a while now, I’ve been posting a variety of tech related blogs to my own personal pages.  Typically, I write these articles to document how I did certain things so that I can keep a record (for myself) and to help others who are like minded and are having difficulty finding the information elsewhere.   However, I decided that it would be best, to separate my tech stuff from my personal stuff in a more official fashion.

While I’ll still keep the content previously posted to my personal blog intact, I have cloned all of my hard-core tech related posts to this new site.  Going forward you’ll be able to find fresh new tech content here.  More ramblings on Ubuntu, setting up and managing a NAS, etc.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

It’s been a while, but I’ve finally come around to installing couch potato on my Ubuntu NAS box.  Thanks to my brother-in-law, who sent an e-mail to me that day regarding couch potato, I felt motivated to get it installed. However, what should have taken only maybe 30 minutes or so ended up stretching into two hours.

I had done a quick google search on installing couch potato on Ubuntu and come up with Ainer’s fine instructions and another page (on how-to-forge)on creating the ultimate NAS.  Both had great instructions, don’t get me wrong, but they were instructions for couch potato v1… which is unfortunately EOL’d.  As I happily attempted to install couch potato v1 using the instructions, I came across different instructions on the couch potato website which conflicted with what I was doing.  Needless to say I had burnt through an hour on this already.

Fortunately, I came across a wonderful site (linuxplained.com) that explained everything for me and got me up and running in no time.  (thank you very much Anand, this helped me greatly)

And for those of you with short attention spans and just want the steps in raw form, then here they are:

sudo apt-get install git-core python
cd ~
git clone git://github.com/RuudBurger/CouchPotatoServer.git .couchpotato
sudo cp ~/.couchpotato/init/ubuntu /etc/init.d/couchpotato

Then,

sudo nano /etc/init.d/couchpotato

Edit the following then save (CTRL-O) and exit (CTRL-X) (replace user with your username):

# path to app
APP_PATH=/home/user/.couchpotato/

# user
RUN_AS=user

Then back at the terminal prompt, set the script to executable and add to the boot script.

sudo chmod +x /etc/init.d/couchpotato
sudo update-rc.d couchpotato defaults

Now, the next time you boot couch potato server will auto-run.  Optionally you can manually start and stop the service by the following commands:

sudo /etc/init.d/couchpotato start
sudo /etc/init.d/couchpotato stop

And there you have it.  Navigate on over to http://127.0.0.1:5050 (or whatever your NAS IP is with 5050 as the port) to start the configuration wizard.  Linuxplained.com has a great guide for that too.  Happy downloading!

 

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

Previously on this blog, I’ve written about how you can access your files from anywhere using freenas and ajaxplorer or ssh.  Given that I’ve switched to Ubuntu server, I wanted to clarify that the ssh method still works great, and in fact can be easily accessed via Android apps as well! (I should have titled this post “Access your files from anywhere with Ubuntu Server”)

Regarding accessing your files from Android, I’m sure this would also work with iOS devices as well, however I’m personally an Android user.  All you really need is a file manager or FTP program that can talk to an SFTP server.  I personally love EStrongs File Explorer and recommend it for general Android file management.  It also supports SFTP, perfect for accessing your SSH FTP server and all of your files.

Simply poke a hole in your router (I would suggest not using port 22) and route to your Ubuntu server SSH port 22.  Easy as pie.


Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful 

Public service announcement folks.   Recently, after completing updates where the Linux kernel was being updated, my Ubuntu server hung on reboot.  This was rather unpleasant for me since it meant that I needed to climb up on a chair, attach a monitor and keyboard and try to debug the issue of why my system wasn’t booting.

Surprisingly, the system was booting just fine, it was just waiting happily in GRUB (the bootloader) for my input.  This is odd, since GRUB is supposed to auto-boot without any user input.  Somehow, with the update I had recently done, this had changed.

Luckily, I found this blog which told me exactly how to fix this issue.  Unfortunately this has happened twice now and I’ve had to edit the GRUB config each time.   Here’s what you need to do. (many thanks to Knowledge Republic’s blog for documenting this fix)

sudo chmod 644 /boot/grub/grub.cfg

sudo nano /boot/grub/grub.cfg

Find the following line and change from:

set timeout=-1

To:

set timeout=0

Drop me a comment if this helps you out.

Was this post helpful?
  • Thanks 
  • Sort-of 
  • Not Helpful