SCaLE 13x – Days Two and Three

[Note: Today marks the start of my thirteenth year of blogging about open source. Wow]

Sorry for the delay in getting this post written. We’ve had a couple of bouts of winter weather in North Carolina this week and it has really messed up the schedule. This was quite unlike the beautiful weather we experienced in Los Angeles for SCaLE 13x.

Saturday, Day Two for me, was a long one. The expo floor was open for eight hours so outside of giving my talk and lunch I was pretty much in the booth. I think my talk was well received, but Jeff’s talk later in the day was standing room only. I was told that the talks were being streamed live so I hope to see archived recordings soon.

I missed Jeff’s talk because I was in the booth giving away another set of MC Frontalot CDs. The winner did not want to be identified, so I don’t have a picture.

I didn’t take many pictures that day (we were too busy) but I did get a lot that evening. There was a game night with food and a bar, and that’s where the OpenNMS-sponsored Frontalot show was held.

Before the main festivities, they opened up the room for kids. They had a bunch of games set up. Jess told me that this was “Super Smash Brothers” (I think) at the Mario Kart stage.

About 9:30pm Damian started his set.

I think it was well received – I at least had fun. He hit all of my favorites with the exception of “Critical Hit” and this was the first show I’ve been to that he also had video. For those songs with official videos, those were played, but he’d also arranged some graphics for the others. I thought “Victorian Space Prostitute” worked particularly well, although Jess was the only one I think who recognized all the cosplay.

After the show there was a raffle. Colleen did a lot of the giveaways but since I had to spend the entire weekend in the booth I didn’t get to play (sniff).

I did get a nice picture of another SCaLE organizer, Ilan with his lovely bride:

After the show I ran into Jono Bacon and most of the Bad Voltage crew.

Jono seemed convinced that I looked like George Jetson:

but I think I much more rock the Fred Flintstone:

Comments? I doubt it is as divisive as the color of that dress.

[Note: Does any else remember that short lived show Wait Till Your Father Gets Home? Hanna-Barbera’s The Flinstones was set in the past, and The Jetsons was set in the future, and this was the show for the present. Yes, I’m old]

As the evening wound down I helped Damian get his gear back to the hotel and then we hit the bar in the Hilton. I had met the wonderful Stuart Langridge earlier, so I offered to buy him a drink (and learned that there should be no fruit in beer) and before you knew it we had a nice little crowd in our little corner of the bar. While I love going to conferences for the things I learn, sometimes it is the moments around the conference that create the most memories.

On Sunday I managed to hit the booth right on time (at the ungodly hour of 10am) and then, before you knew it, it was over. The wonderful Cynthia Aguilera was the winner of our third and last set of Frontalot CDs.

After we got everything packed up for the trip home, I just kind of crashed. We ended up watching the Oscars and then going to bed.

Thanks to everyone who made this year’s SCaLE conference awesome, and you can next catch us as April’s POSSCON.

Electronic Program Guide Changes at Schedules Direct

I just noticed that my OpenELEC, Kodi and Tvheadend based DVR was no longer updating the Electronic Program Guide (EPG).

I would get the error:

Service description 'http://docs.tms.tribune.com/tech/tmsdatadirect/schedulesdirect/tvDataDelivery.wsdl' can't be loaded: 500 Can't connect to docs.tms.tribune.com:80 (Connection timed out)

when running the fetch script.

Digging around, I found out the reason is that the Gracenote service is being discontinued and thus some URLs have changed.

I use a script called tv_grab_na_dd from the Debian (wheezy) xmltv-utils package. Version 0.5.63-2 doesn’t appear to use the new URLs. The link above suggests adding:

54.85.117.227  docs.tms.tribune.com webservices.schedulesdirect.tmsdatadirect.com

to /etc/hosts and that worked well for me. Of course, if the IP address for Schedules Direct ever changes it will need to be updated.

It looks like this is fixed in xmltv-utils version 0.5.66.

SCaLE 13x – Day One

Well, technically it was Day Two, but with the launch of the new OpenNMS Group website, our Meridian product, and actually trying to finish up my slides for my SCaLE presentation, it was the first day I actually made it to the show.

I love this show. It was the first real grassroots open source conference I ever attended (at Scale 5x back in 2007) and it was amazing. I haven’t been able to make as many of them as I would have liked (they scheduled one on Valentine’s Day once) but I always welcome the opportunity. This year they can accommodate 3000 attendees and while they haven’t released actual numbers, that is a lot of geeks.

I spent almost all of the day in the expo hall. We introduced the new Horizon/Meridian booth:

which I think turned out well. I also got to wander around and talk with a few of the other projects that are here. One was the Kodi team:

and having used it for several weeks now I think it is an amazing piece of software. I also got to talk briefly with Jeremy Sands, one of the organizers of the SouthEast LinuxFest:

and I should point out that the dates have been set for the conference this year (12-14 June) and the RFP is now open.

My talk at SCaLE is about the changing nature of open source, and it has never been a better time to be involved if you want a job. At most shows I see signs like this:

and there is even a career booth hosted by Disney, of all companies:

We had a nice amount of booth traffic. The OpenNMS shirts went in the first hour (should have brought more) and in honor of MC Frontalot performing on Saturday night, we are giving away signed sets of all six of his CDs.

The Friday winner was Ganeshbaba who registered at the very last minute, but we still have two more sets to give away.

Anyway, if you are at the show be sure to stop by and if you aren’t, well, why the heck aren’t you here?

OpenNMS Horizon 15.0.1 Released

Just a quick note to let everyone know that OpenNMS 15.0.1 has been released. This is the first bug fix release for OpenNMS 15, and if you are running it I strongly suggest you upgrade.

As we are working to complete our transition to Hibernate (which will allow OpenNMS to use any database backend, not just PostgreSQL) we discovered an old issue where, under certain circumstances, duplicate outage records could be created. When this happened under the new code, it would cause an exception and the outages would never be cleared. This has been corrected.

The complete list of changes is as follows:

Bug

  • [NMS-7331] – Outage timeline does not show all outages in timeframe
  • [NMS-7392] – Side-menu layout issues in node resources
  • [NMS-7394] – Outage records are not getting written to the database
  • [NMS-7395] – Overlapping input label in login screen
  • [NMS-7396] – Notifications with asset fields on the message are not working
  • [NMS-7399] – Surveillance box on start page doesn't work
  • [NMS-7403] – Data Collection Logs in wrong file
  • [NMS-7406] – Incorrect Availability information and Outage information
  • [NMS-7409] – Visual issues on the start page
  • [NMS-7423] – Duplicate copies of bootstrap.js are included in our pages
  • [NMS-7425] – Poller: start: Failed to schedule existing interfaces
  • [NMS-7426] – Not monitored services are shown as 100% available on the WebUI
  • [NMS-7427] – The PageSequenceMonitor is broken in OpenNMS 15
  • [NMS-7432] – Normalize the HTTP Host Header with the new HttpClientWrapper
  • [NMS-7433] – Topology UI takes a long to load after login
  • [NMS-7434] – Disabling Notifd crashes webUI
  • [NMS-7435] – The Quick Add Node menu item shouldn't be under the Admin menu
  • [NMS-7437] – The default log level is DEBUG instead of WARN on log4j2.xml
  • [NMS-7452] – CORS filter not working
  • [NMS-7454] – Netscaler systemDef will never match a real Netscaler

Enhancement

  • [NMS-7419] – Read port and authentication user from XMP config
  • [NMS-7438] – Apply the auto-resize feature for the timeline charts

Review: 2015 Dell XPS 13 (9343) Running Linux

In short, it doesn’t run Linux very well. (sigh)

When and if Eric reads this he’s just going to shake his head. For two years in a row now I’ve been lured by the wonders of new laptops announced at CES, and in both years I’ve been disappointed. He tells me I’m stupid for ordering the “new shiny” and expecting it to work, but I refuse to give up my dream.

Luckily this isn’t a huge issue for me since my main machines are desktops, but my second generation Dell XPS 13 “sputnik” is getting a little old. I am really looking forward to a slightly larger screen. The pixel density isn’t great on my laptop, especially compared to what is out now, and I am finding myself a little cramped for screen real estate.

The new XPS 13 is an amazingly beautiful device. I spent over three days trying to get it to work just because it was gorgeous. It had become precious to me.

My precious.

But it was not to be. I first started out with my default desktop, Linux Mint. It installed easily and I was very happy to see that code had been added to deal with the insane size of the screen (3600×1800 pixels). While a few icons were still small (like the reload arrow at the end of the Firefox search bar) most adjusted well, including the icons in the settings window. Great job Cinnamon team.

No, the issue I fought long and hard to fix was the touchpad. Every minute or so it would just freeze:

Feb  1 13:15:48 sting kernel: [ 1746.787178] psmouse serio1: resync failed, issuing reconnect request
Feb  1 13:15:52 sting kernel: [ 1750.722621] psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
Feb  1 13:15:52 sting kernel: [ 1750.723734] psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
Feb  1 13:15:52 sting kernel: [ 1750.724642] psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
Feb  1 13:15:52 sting kernel: [ 1750.725717] psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
Feb  1 13:15:52 sting kernel: [ 1750.737756] psmouse serio1: TouchPad at isa0060/serio1/input0 - driver resynced.
Feb  1 13:15:55 sting kernel: [ 1753.855093] psmouse serio1: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 2 bytes away.
Feb  1 13:15:55 sting kernel: [ 1754.361293] psmouse serio1: resync failed, issuing reconnect request

I found a post that discussed changing out the driver which seemed to help, some but I could never get the problem to go completely away. The amazingly helpful Arch Linux folks suggested some workarounds, but nothing helped. I found it ironic that the touch screen worked fine.

I then switched to Ubuntu, thinking that might help. It didn’t, and along the way I lost audio. It seemed the audio device would just disappear. I tried 14.04, 14.10 and the alpha of 15.04. Also, Ubuntu did not handle the resolution well. While I could adjust the settings, it wasn’t done automatically for me like with Cinnamon, and certain things like the settings window remained tiny and somewhat “clipped”.

I went back to Mint and discovered that now I had wonky audio issues there. Sometimes it would be there and other times not. I stayed on 17.1 but updated the kernel to the 3.19 release candidate, but that didn’t help.

The scariest issue was that on occasion the screen would just go blank. It didn’t kill the system, if I was playing a movie file you could still hear the audio (assuming that was working), but no combination of key strokes would bring it back. I did find that closing the screen (to suspend) and reopening it would fix it for awhile, but I don’t necessarily want to have to do that in the middle of an important presentation.

Note: while the system seemed to suspend and resume okay, the power light didn’t blink to let you know it was still on like on the older XPS 13 model.

Now I’m certain that most of this will be corrected in the next few months. The Broadwell chipset is still pretty new, and rumor has it that Dell plans to support Ubuntu 14.04 on this laptop, but they will have a lot of work to do since it seems to require the 3.18+ kernel for most of the new shiny.

In the meantime I returned it and bought an M3800 preloaded with Ubuntu. While it is a bigger laptop than I’m used to, I like supporting Linux-native products and I will at least have the ability to contact Dell with issues should they arise.

I should point out that, while not quite to Apple standards, Dell has been pretty amazing throughout the process of ordering and returning this laptop. While not ready for prime time, if you are in the market in a couple of months for a small, awesome Linux laptop, be sure to check out the XPS 13. But unless you are a masochist like me, you definitely should wait.

Oh, and if any Dell folks should join the ranks of my three readers, I’m more than happy to test any unit you might send my way (grin).

SCaLE 13x – February 2015

We are three weeks away from the Southern California Linux Expo and I am getting really excited about it.

For those of you who are in to OpenNMS then tune in that day because we are making a pretty significant announcement at the show. Be sure to come buy the booth on the expo floor and say “hi” to the team, and both Jeff and I will be speaking (although at least during my talk you probably have better things to go see. For example, have you met our Lord and Savior, Docker?)

We are also incredibly excited that MC Frontalot will be performing. I’m not sure of the exact details but I believe it will be Saturday night.

(Note: I stole that picture from here since I like the fact that he has hair in it, well for certain values of “hair”, and note that link may not be safe for work [nudity])

If you are unfamiliar with his work, be sure to check out his YooToob Channel, and if you are so inclined I strongly recommend reading this well written bit (on Jezebel no less) concerning an issue surrounding a Penny Arcade comic a few years ago that really showcases the type of guy he is. Again, might not be safe for work (language). Be sure to click on the link to the original post for more detail.

If you are still on the fence about SCaLE, perhaps this little nugget will sway you: use Promo Code “ONMS” and get 40% off show registration. It’s cheap at twice the price and one of my favorite events of any year, but we want it to be extra special for 2015.

Welcome to OpenNMS 15

Today OpenNMS 15 was released. It was a year and a half between the release of OpenNMS 1.12 and OpenNMS 14, but only three months between OpenNMS 14 and OpenNMS 15.

As we move forward this year we are trying to adhere more to the open source mantra of “release early, release often”, and thus the new major release. There have been 1177 new commits since 14.0.3

You’ll also notice that this version of OpenNMS has a new name – Horizon. We’ve always thought that OpenNMS represents the best network management platform available and the name is meant to reflect that. We hope to make as many improvements we can, as fast as we can, without sacrificing quality, thus keeping OpenNMS out on the “horizon” from the competition.

The main improvement for the 15 release is in the webUI. Although you might not notice it at first, we’ve spent months migrating the whole interface to a technology called Bootstrap. The Bootstrap framework allows us to create a responsive UI that should look fine on a computer, a tablet or a phone. This should allow us a lot more freedom to modify the style sheet and we hope to be able to add “skinable” theme options soon.

A cool feature that can be found in this new UI is the ability to automatically resize resource graphs. If you have a particular set of resource graphs displayed:

and then you shrink the window, you’ll note that the menu turns into a dropdown and the graphs themselves now fit the more narrow window:

There are a number of bug fixes and other new features, and a complete list can be found at the bottom of this post or in our Jira instance (but for some reason you have to be logged in to see it). I am happy to say that there was no need for major security fixes in this release. (grin)

Sub-task

  • [NMS-6642] – CiscoPingMibMonitor
  • [NMS-6674] – NetScalerGroupHealthMonitor
  • [NMS-7060] – merge DocuMerge branch into develop branch
  • [NMS-7086] – alter documentation deploy step in bamboo to match the new structure
  • [NMS-7164] – Fix fortinet event typos (fortinet vs fortimail)
  • [NMS-7238] – Fix UEI names for CitrixNetScaler trap events
  • [NMS-7264] – Document CORS Support

Bug

  • [NMS-1956] – Missing localised time in web pages
  • [NMS-2358] – Time to load Path Outages page grows with each entry added
  • [NMS-2580] – Null/blank sysName value causes null/blank node label
  • [NMS-3033] – Create a HibernateEventWriter to replace JdbcEventWriter
  • [NMS-3207] – Able to get to non authorised devices via path outages link.
  • [NMS-3615] – Custom Resource Performance Reports not available
  • [NMS-3847] – jdbcEventWriter: Failed to convert time to Timestamp
  • [NMS-4009] – wrong content type in rss.jsp
  • [NMS-4246] – Paging arrows invisible with firefox on mac
  • [NMS-4493] – Notification WebUI has issues
  • [NMS-4528] – Time format on Event webpage is different that on Notices webpage
  • [NMS-5057] – Installer database upgrade script (install -d) scans every RRD directory, bombs with "too many open files"
  • [NMS-5427] – RSS feeds are not valid
  • [NMS-5618] – notifications list breadcrumbs differs from notifications index page
  • [NMS-5858] – Resource Graphs No Longer Centered
  • [NMS-6022] – Vaadin Header not consistent with JSP Header
  • [NMS-6042] – Empty Notification search bug
  • [NMS-6472] – Map Menu is not listing all maps
  • [NMS-6529] – Web UI shows not the correct Java version
  • [NMS-6613] – Problems installing "Testing" on Ubuntu 14.04
  • [NMS-6826] – Queued Ops Pending default graph needs rename
  • [NMS-6827] – Many graph definitions in snmp-graph.properties have line continuation slashes
  • [NMS-6894] – New Focal Point Topology UI (STUI-2) very slow
  • [NMS-6917] – Node page availability graph isn't "(last 24 hours)"
  • [NMS-6924] – WMI collector does not support persistence selectors
  • [NMS-6956] – test failure: org.opennms.mock.snmp.LLDPMibTest
  • [NMS-6958] – Requisition list very slow to display
  • [NMS-6967] – GeoMap polygons activation doesn't accurately reflect cursor location
  • [NMS-7015] – Navbar in Distributed Map is missing
  • [NMS-7059] – Local interface not displayed correctly in "Cdp Cache Table Links"
  • [NMS-7075] – xss in device snmp settings
  • [NMS-7112] – provision.pl just works if the admin user credentials are used
  • [NMS-7115] – Message Error in DnsMonitor
  • [NMS-7120] – Unable to add graph to KSC report
  • [NMS-7126] – ReST call for outages ends up with 500 status
  • [NMS-7144] – OpenNMS logo doesn't point to the same file
  • [NMS-7149] – footer rendering is weird in opennms docs
  • [NMS-7170] – Add a unit test for NodeLabel.computeLabel()
  • [NMS-7176] – ie9 does not display any 'interfaces' on a switch node – the tabs are blank
  • [NMS-7185] – NullPointerException When Querying offset in ReST Events Endpoint
  • [NMS-7246] – OpenNMS does not eat yellow runts
  • [NMS-7270] – HTTP 500 errors in WebUI after upgrade to 14.0.2
  • [NMS-7277] – WMI changed naming format for wmiLogicalDisk and wmiPhysicalDisk device
  • [NMS-7279] – Enable WMI Opennms Cent OS box
  • [NMS-7287] – Non provisioned switches with multiple VLANs generate an error
  • [NMS-7322] – SNMP configuration shows v1 as default and v2c is set.
  • [NMS-7330] – Include parts of a configuration doesn't work
  • [NMS-7331] – Outage timeline does not show all outages in timeframe
  • [NMS-7332] – Unnecessary and confusing DEBUG entry on poller.log
  • [NMS-7333] – Switches values retrieved incorrectly in the BSF notification strategy
  • [NMS-7335] – QueryManagerDaoImpl crashes in getNodeServices()
  • [NMS-7359] – Acknowledging alarms from the geo-map is not working
  • [NMS-7360] – Add/Edit notifications takes too much time
  • [NMS-7363] – Update Java in OpenNMS yum repos
  • [NMS-7367] – Octectstring not well stored in strings.properties file
  • [NMS-7368] – RrdDao.getLastFetchValue() throws an exception when using RRDtool
  • [NMS-7381] – Authentication defined in XML collector URLs cannot contain some reserved characters, even if escaped.
  • [NMS-7387] – The hardware inventory scanner doesn't recognize PhysicalClass::cpu(12) for entPhysicalClass
  • [NMS-7391] – Crash on path outage JSP after DAO upgrade

Enhancement

  • [NMS-1595] – header should always contain links for all sections
  • [NMS-2233] – No link back to node after manually unmanaging services
  • [NMS-2359] – Group path outages by critical node
  • [NMS-2582] – Search for nodes by sysObjectID in web UI
  • [NMS-2694] – Modify results JSP to render multiple columns
  • [NMS-5079] – Sort the Path Outages by Critical Path Node
  • [NMS-5085] – Default hrStorageUsed disk space relativeChange threshold only alerts on a sudden _increase of free space_, not a decrease of free space
  • [NMS-5133] – Add ability to search for nodes by SNMP values like Location and Contact
  • [NMS-5182] – Upgrade JasperReports 3.7.6 to most recent version
  • [NMS-5448] – Add link to a node's upstream critical path node in the dependent node's web page
  • [NMS-6508] – Event definitions: Fortinet
  • [NMS-6736] – ImapMonitor does not work with nginx
  • [NMS-7123] – Expose SNMP4J 2.x noGetBulk and allowSnmpV2cInV1 capabilities
  • [NMS-7157] – showNodes.jsp should show nodes in alphabetical order
  • [NMS-7166] – Backup Exec UEI contain "http://" in uei
  • [NMS-7205] – Rename link to configure the Ops Board in the Admin section.
  • [NMS-7206] – Remove "JMX Config Generator Web UI ALPHA" from stable
  • [NMS-7228] – Document that user must be in 'rest', 'provision' or 'admin' role for provision.pl to work
  • [NMS-7247] – Add collection of SNMP MIB2 UDP scalar stats
  • [NMS-7261] – CORS Support
  • [NMS-7278] – Improve the speed of the ReST API and Service Layer for the requisitions' repositories.
  • [NMS-7308] – Enforce selecting a single resource for Custom Resource Performance Reports
  • [NMS-7317] – Rearrange Node/Event/Alarm/Outage links on bootstrap UI
  • [NMS-7384] – Add configuration property for protobuf queue size
  • [NMS-7388] – IpInterfaceScan shouldDetect() method should check for empty string in addition to null string

OUCE 2014 Videos Now Available

The dates are now set for the 2015 OpenNMS Users Conference, but if you can’t wait until September you can now relive the 2014 conference through the magic of YouTube.

You can visit the 2014 conference events calendar and if a video is available it will show up under the “Links” section.

Markus Neumann has been working through the videos and doing his best to improve them, but apologies in advance for the quality of some of them. We’ll attempt to record things better in Fulda.

Building an Open Source PVR: Step Three – Electronic Program Guide

The most frustrating thing about this project was getting the Electronic Program Guide (EPG) to work. Unfortunately, it isn’t easy.

This was one of the things that TiVo excels at doing. You are basically paying for a very up to date program guide. They also offered something called a “Season Pass” which would cause all of the episodes of a particular program to be recorded without having to explicitly select them.

When I got my EyeTV system, this part was a snap. They partner with TV Guide to provide the service, and unlike TiVo’s $14.95/month fee it is a yearly fee of $19.95 (with the first year being included with the unit).

Even my Sony Bravia is able to get over the air EPG information, but I wasn’t able to get that to work with OpenELEC.

The actual EPG configuration occurs in the Tvheadend software. You get a screen like this:

There are three main areas of configuration: the “Internal Grabber”, “Over-the-air Grabbers” and “External Interfaces”.

The internal section displayed a cron job but no module options. None of the OTA grabbers seemed to work, and there wasn’t a module for North America. That left the external grabbers.

I started digging around and found that it really isn’t easy to get this running.

One tool that kept coming up was XMLTV. On the frontend configuration for the Tvheadend client in OpenELEC they even have a section on it:

XMLTV is a number of things, such as a format for representing TV listings, but it is mainly a set of tools “to obtain, manipulate, and search TV Listings”. It contains programs that will connect to an external source to gather EPG data.

Unfortunately, OpenELEC doesn’t ship with it. There is a script called “tv_grab_file” which is used to manage the XMLTV data, but not to actually acquire that data.

For me the easiest solution was to install XMLTV via apt on my home Debian server. It comes with a script called tv_grab_na_dd that can be used to fetch the data.

But I still wasn’t done. I needed a data source. It looks like all the cool kids use Schedules Direct. They are a non-profit that promotes open source software and provides, for a fee, access to EPG information. Since they had a free trial I signed up, configured my tv_grab_na_dd script to access their information, and voilà, I had an XML file with what appeared to be useful information.

I placed that in the webroot of my server, and then configured OpenELEC to point to it. Nothing happened. So I copied the file to the OpenELEC server, modified the client to use the “FILE” method (see screenshot above) and nothing happened.

I finally had to uncheck the XMLTV checkbox under “External Interfaces”. When I did that I finally had something under the “Internal Grabbers” section.

The last chore was to associate the channels I had discovered with the program guide.

Prior to getting all of that to work, the drop down for “EPG Source” had been blank.

So, to summarize my steps:

  1. Get an account at schedulesdirect.org
  2. Install the XMLTV tools somewhere (I used a Debian box)
  3. Configure XMLTV to access your Schedules Direct account
  4. Set up a cron job to periodically grab the updated EPG information and store it in a web root:
     0 1,13 * * * /usr/bin/tv_grab_na_dd --config-file ~/xmltv.conf --days 7 > /secure/html/xmltv.xml
    
  5. On the OpenELEC box, set up a cron to fetch the data:
    0 2,14 * * * wget http://172.20.10.12/xmltv.xml -O /storage/xmltv.xml
    

Whew. So far everything has been working well. You want to be sure not to fetch the data too often as that can overwhelm the Schedules Direct servers. My current seven day XML file is about 10MB.

I went ahead and signed up for a year account for $25, bringing my total to $705.92 (the hardware was $680.92 and the software was, yup, $0). It’s quite possible to shave off about $200 by going with less memory and a smaller SSD (or using an HDD) or if you already have a server to run the Tvheadend backend you could get by with a Raspberry Pi.

My next steps are to play with all the cool add-ons and to try and organize my pictures in a fashion where they would be usable with the system. More fun for me.