unixwiz anything dealing with *NIX or what ever I want to write about

17Mar/150

Raspberry Pi’ing

Splunk temp monitor

Recently I decided I needed a better way to monitor the temperature and humidity in various parts of my house. The main reason was the thermostat for the house is located in a hallway that is more closed in than anything. So while the thermostat may show that it is 75 degrees in the house the rest of the house my only have been 70 degrees or less. After the winter we have had, I also needed a good way to monitor the humidity in the house. The only was I was able to do it was with a little Oregon Scientific thermometer I bought at Target. But the problem with this was it was only for one room, didn't seem to be very accurate and I had no way of logging the values over a time period.

In comes the Raspberry Pi, along with a DHT22 temperature/humidity sensor and Splunk, I can now monitor, record and graph in realtime the temp and relative humidity in various parts of the house (and the outside).

What I got was this:

  1. 3 x Raspberry Pi 2 Canakits from Amazon.com
  2. 5 x DHT22 Digital Sensors from Amazon.com
  3. 1 x DHT11 Digital Sensor from Amazon.com

Now the DHT11, was what I purchased in the first round along with just one of the Raspberry Pi's. It is not as sensitive as the DHT22's, but since it was just for the original test it was ok for what I needed. The second round I bought the other two Raspberry Pi's and the 5 DHT22 sensors.

What I intend to do is use some of the pre-existing CAT5 runs through the house to wire the DHT22's in to and then have the other end of the CAT5 runs connect in to a Raspberry Pi in the Garage. This way I can do multiple sensors on one device versus having a device in every room.

 

Some of the benefits of getting the Raspberry Pi Canakits I got are:

  1. A clear case is included with the correct cut outs for the raspberry pi.
  2. A USB wifi dongle is included, and the drivers are pre-loaded in the OS.
  3. It comes with a pre-loaded 8GB microSD card.
  4. It comes with a miniature breadboard with a 40 pin cable and breakout board that plugs perfectly in to the breadboard.
  5. Comes with various resistors and led's and pushbuttons.
  6. Has a HDMI cable included, which made it easy to hook in to my monitor
  7. Various jumper cables for the breadboard

 

Overall, I would say that the total time to get a base monitor up and running is a few minutes. But this is based of me already having Splunk, the network, dhcp, dns, etc already set up. So I am going to detail the basic steps I used to get it up and running:

  1. Unbox the raspberry pi, place the heatsinks on the two "large" chips on the top side, and then place it in the clear case.
  2. Hook up the HDMI, keyboard, mouse, and WIFI dongle.
  3. Insert to the microSD card
  4. Hook up the USB power cable and watch it boot NOOBS.
  5. Once it is booted, select the Raspbian to install. This probably takes the longest of all the steps to do, as it is expanding the operating system on to the microSD card.
  6. Once this is done, it will reboot and bring up a text based config. I set the hostname, enable ssh, set the timezone and finally set the locale.
  7. At the login prompt, you can log in with the userid pi and the password of raspberry.
  8. Next to set up the network, if you are using the ethernet, then it should already have an IP address if you have DHCP running on your network. If you are using the WiFi dongle, then edit the /etc/wpa_supplicant/wpa_supplicant.conf  file as root and put the following in it:
    network={
    ssid="YOURWIRELESSSSID"
    psk="YOURWIRELESSPASS"
    }

    Where YOURWIRELESSSSID is the SSID of the AP you want to connect to and the PSK value is the password for that SSID/AP. (If you are doing MAC filtering, you can get the MAC address by running ifconfig -a as root and look at the wlan0.

  9. Once you save the file in the item above, issue the following commands:
    wpa_action wlan0 stop
    ifup wlan0
    ifconfig -a
  10. By now if everything is working correctly you should have a IP address and network connectivity. You can use wpa_cli status to verify the network connectivity.
  11. Now that the network is up and running I needed to download some software:
    sudo su -
    apt-get update
    apt-get upgrade
    apt-get install python-dev
    git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
    wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz
  12. Now that we have the software downloaded it is time to do some little compiling:
    tar -zxvf bcm2835-1.42.tar.gz
    cd bcm2835-1.42
    ./configure
    make
    make install

    That should install the driver for the bcm2835 chip.

  13. Next we need to do the python code setup:
    cd Adafruit-Raspberry-Pi-Python-Code
    cd Adafruit_DHT_Driver_Python
    python ./setup.py install
  14. At this point the code should be done. You can now power down (shutdown -h now) the Raspberry Pi and hook in the DHT22 sensors. (Make sure to disconnect the power before connecting the 40 pin cable.
  15. The way I hooked the sensor in for testing was to connect the 40 pin cable to the Raspberry Pi and the other in to the breakout board which was attached to the mini breadboard. Once that was done I hooked a jumper from 3.3 V to the first pin on the DHT22. Then placed a 10K resistor between another 3.3V connection and the second pin. In addition a jumper was ran from GPIO4 to the second pin of the DHT22. The third pin is left unconnected and the forth pin is connected to Ground. I will post a picture later.
  16. Once everything is connected, power the Pi back up and log in and switch to the root account.
  17. Next to see if everything is working change in to the Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver_Python directory.
  18. Then run python ./Adafruit_DHT.py 22 4. The 22 is the type of the sensor, so if you are using a DHT11 use 11, if a DHT22 use the 22. The number 4 is the GPIO port that the sensors data pin is connected to. Once you run it you should see something like this:
    root@rpi2:~/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver_Python# python ./Adafruit_DHT.py 22 4
    using pin #4
    Temp = 20.2999992371 *C, Hum = 40.4000015259 %
  19. In the above, we can see that the Temp is 20.29C and the Humidity is 40.40%. If you want the Temp outputted as Fahrenheit, like I did, make a copy of the Adafruit_DHT.py file (for a backup) and then add a new line at line 37 with the following:
    tf = (( t * 9 ) / 5.0 ) +32;

    Then on line 39, you will want to change the *C to *F, and then in the format(t,h) you will want to change the t to a tf, so the line would look like this now:

    print("Temp = {0} *F, Hum = {1} %".format(tf,h))
  20. Now if you re-run, it will look like this:
    root@rpi2:~/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver_Python# python Adafruit_DHT-f.py 22 4
    using pin #4
    Temp = 68.1800006866 *F, Hum = 40.0 %
  21. Now that we have the data being output in the format we like, the only thing left was to log it. What I did was create a shell script that is run by cron every minute (* * * * *) and it outputs the values to a log file called /var/log/temp+humid.log. This log file is then pulled in by Splunk for graphing and other fun stuff that will be another post.
  22. The script I wrote looks like this:
    #!/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    export PATH
    RESULTS="`python /root/TempLogger/Adafruit_DHT-f.py 22 4 | grep Temp `"
    TEMP="`echo ${RESULTS} | awk '{print $3}'`"
    HUMID="`echo ${RESULTS} | awk '{print $7}'`"
    DATE="`date \"+%Y-%m-%d %H:%M:%S\"`"
    echo "${DATE} ROOM=FamilyRoom TEMP=${TEMP} RH=${HUMID}" >> /var/log/temp+humid.log
  23. The output that gets logged looks like this:
    2015-03-17 21:44:02 ROOM=FamilyRoom TEMP=68.1800006866 RH=39.7000007629

 

Some times, and I haven't figured out why yet, it will log null values for the TEMP and RH. I need to add some more checking in to the script to make it more robust, but for now it is working.

In the next post I will cover what I do with the data in Splunk, and how I get the outside temps from the local airport and add them to Splunk as well.

13Sep/14Off

Subversion on Solaris

So I have been trying to find the "definitive" guide on compiling and installing Subverison on Solaris. There are random sites over the interwebs that have a spattering of different tips, so I thought I would write one how how I did it and what all was done. When you finish this, you will have a basic Subversion system up and running to which you can then further lock down... Requirements: I downloaded the following:

  1. Subversion 1.8.10 (http://mirror.metrocast.net/apache/subversion/subversion-1.8.10.tar.gz)
  2. APR 1.5.1 (http://mirror.metrocast.net/apache/apr/apr-1.5.1.tar.gz)
  3. APR Util 1.5.3 (http://mirror.metrocast.net/apache/apr/apr-util-1.5.3.tar.gz)
  4. scons 2.3.0 (http://prdownloads.sourceforge.net/scons/scons-local-2.3.0.tar.gz)
  5. Serf 1.3.7 (http://serf.googlecode.com/svn/src_releases/serf-1.3.7.tar.bz2)
  6. Apache HTTPD 2.2.27 (http://mirror.metrocast.net/apache/httpd/httpd-2.2.27.tar.bz2)
  7. SQLite 3.8.6 (http://www.sqlite.org/2014/sqlite-autoconf-3080600.tar.gz)
  8. ViewVC 1.1.22 (http://viewvc.tigris.org/files/documents/3330/49347/viewvc-1.1.22.tar.gz)
  9. diffutils 3.2 (http://ftp.gnu.org/gnu/diffutils/diffutils-3.2.tar.gz) [ Needed for ViewVC to work ]

Next up is compiling the software. This is the order I did things:

  1. Apache HTTP Server
  2. APR
  3. APR-Util
  4. SQLite
  5. scons
  6. serf
  7. subversion
  8. viewvc
  9. diffutils

I put all the tar balls in a directory called svn in my home directory. So all the instructions below are relative to it.

 

Apache HTTP Server

cd httpd-2.2.27
./configure --prefix=/opt/svnweb --with-ssl=/usr/sfw --with-ldap --enable-mods-shared="ssl deflate rewrite ldap authnz-ldap dav dav-fs dav-lock"
make
make install

 

APR

cd apr-1.5.1
./configure --prefix=/opt/sungeek
make
make install

 

APR-Util

cd apr-util-1.5.3
./configure --prefix=/opt/sungeek --with-apr=/opt/sungeek
make
make install

 

SQLite

cd sqlite-autoconf-3080500
./configure --prefix=/opt/sungeek
make
make install

 

scons

mkdir /home/unixwiz/scons
cd scons
tar -xvf ../scons-local-2.3.0.tar
ln -s /home/unixwiz/scons/scons.py /home/unixwiz/bin/scons

(made sure the link points to a directory in your path)

 

serf

At line 251 of SConstruct add the following (this is needed to get it to work on Solaris):

env['PLATFORM'] = 'posix'

(it should be directly below the line that says env.Append(LIBS='m') in the sunos if statement)

cd serf-1.3.7
vi SConstruct   (edit as above noted)
scons APR=/opt/sungeek APU=/opt/sungeek OPENSSL=/usr PREFIX=/opt/sungeek CC=/usr/sfw/bin/gcc CFLAGS=-D__EXTENSIONS__
scons install

The CC and CFLAGS needs to be set otherwise it will try to use CC and will give you some errors about APR_PATH_MAX.

 

Subversion

cd subversion-1.8.10
export CFLAGS=-D__EXTENSIONS__
./configure --prefix=/opt/sungeek --with-apr=/opt/sungeek --with-apr-util=/opt/sungeek --with-serf=/opt/sungeek --with-apxs=/opt/svnweb/bin --with-openssl --with-sqlite=/opt/sungeek
make
make install
cd /opt/sungeek/libexec
cp mod* /opt/svnweb/modules

Next edit the httpd.conf and add the "LoadModule dav_svn_module modules/mod_dav_svn.so" line after the rewrite_module line.

At the bottom of the httpd.conf add the following: (assuming that /svn is the location of your svn repository.)

<Location /svn/repos>
DAV svn
SVNPath /svn>
</Location>

Then change the User/Group from daemon to webservd. Also make sure to change the file systems permissions on /svn to be owned by webservd:webservd.

 

swig-py

cd subversion-1.8.10
make swig-py
make install-swig-py
echo /opt/sungeek/lib/svn-python &gt; /usr/lib/python2.6/site-packages/subversion.pth

 

ViewVC

cd viewvc-1.1.22
./viewvc-install

Installation path: /opt/sungeek/viewvc-1.1.22
DESTDIR path: empth

Edit the /opt/sungeek/viewvc-1.1.22/viewvc.conf and change the following:
svn_roots = svnrepos: /svn
default_root = svn_roots
mime_types_files = /opt/svnweb/conf/mime.types
diff = /opt/sungeek/bin/diff

 

Next copy the files form /opt/sungeek/viewvc-1.1.22/bin/cgi/*.cgi to /opt/svnweb/cgi-bin

Add the following to the bottom of the httpd.conf

<Directory /opt/sungeek/viewvc-1.1.22>
Order Allow, Deny
Allow from All
</Directory>

diffutils

cd diffutils-3.2
./configure --prefix=/opt/sungeek
make
make install

 

23Jul/14Off

So you want to be an IT Superstar?

Today is one of those days that I have to wonder why I took a career in Information Technology (IT)... You see, I have been doing IT for almost 20 years now and it is not like how the commercials on ITT Tech, or any of those other "tech" trade schools. The commercials make it look like it is just a easy 9 to 5 job, where everything is so cool and collect.

What I am going to tell you is it is the exact opposite. You will work all types of hours, some times days on end with out sleep when something dies. You will have unrealistic expectations assigned to your projects by people who more than likely have never even touched a computer or know how anything works on it, other than to send an email or do an Excel spread sheet. You will also probably give up one weekend a month for the famous "patching day" which can be at any time your management decides they want to be. And because they love to do it, it is usually at like 1AM on a sunday morning, which means you lose the entire weekend because you are trying to get sleep and rested up to work that one 8 hour shift that is not your normal work time.

Once you get past all that stuff, unless you are eager to learn on your own time, you can probably kiss any further training to the sky. In the days now of tight budgets and very high work loads, your best bet at training is some computer based training of "what's new in Windows 7", or something totally unrelated to your actual job.

So now that we have talked about that, what provoked me to say this stuff? Well one company, Microsoft. Today was one of those days where I needed to patch some Windows 2008 Servers because of the monthly release of "security" patches because Microsoft and other vendors are in this mode of getting shit out as fast as possible and not checking the code. So as normal, I approved the 7 or 8 patches for the July cycle in WSUS, so far so good. The part that blows is that the patches applied and the servers said, hey I need to reboot. This was no big surprise because how often have you applied a Windows patch and not had to reboot? So off to reboot the servers, and this is where this shit hit the fan. All of the sudden the server went in to a boot loop. In the off chance that you can catch the blue screen of death in the fraction of a second that it was on the screen, you would see that it mentioned something about an error 0x000007b and that you may have a virus.

Well, I can guarantee you that the machines don't have virus' on them. So investigating the error further it appears that the 0x7b is an error that says that the OS can't find the hard drive. Which is ironic because it has booted off of it to get that far. This then starts the oh-shit moment. Luckily this was only 1 of 2 Active Directory servers. I spent a while trying to get it to boot buy following all these different articles. To no avail I could not get it to boot up.

The biggest thing that pissed me off was Microsoft used to have a boot mode where you could step through each driver as it was loading and say whether to load it or not. Unfortunately, I can't find that any where in the F8 menu or any of the other google foo searches. So I tried each of the safe mode options, which each BSoD. I tried Debug Mode, BSoD. I tried to have it log the startup to the ntbtlog.txt, nope, doesn't even write to it. So now I am extremely pissed, to the point where I just said F@#K it, and started a reinstall of Windows 2008R2 (the environment this was in I could do it). But before I did it I tested the other AD server, yup, it bit the dust too.

Luckily reinstalling W2K8 doesn't take terribly long.  However it is a pain in the ass getting an entire environment set back up because one patch blew up your servers. So while I was reinstalling these two servers, I decided to test another less critical server on a different network. Guess what it died too with the same error. So now I am thinking about how bad this could have been if I were doing some heavily used servers.  (Once again this stuff isn't shown in the "tech school" commercials.)

So how do you go forward from this, well there are 2 different type of "tech" people. Those who go home, and start testing every single possibility in their own private lab. Then there are those who don't give a F and wait for other people to fix their problems as they don't have the first clue how to fix stuff if a reboot doesn't fix it.

Can you guess which type of a tech person I am? If you guessed the former, you are correct. First thing I did when I got home from work is created a new W2K8R2 VM and started the OS installing and trying to get it up to the patch level I had the machines at work. But because this is windows that takes FOREVER with all the reboots and waiting for it to "see" the patches offered to it.

The group in the later (those who don't care and wait for others to fix it) really start to make me mad now days. Now I can say that I spend a lot of my own free time doing a lot of stuff to teach my self practically everything I know about IT, as when I went through school, none of this stuff was taught (Shit, I am a UNIX person, but bought a Microsoft TechNet subscription just to learn as much as I can about Windows Server, etc). But some "IT" people seem to get pissed when I make the notion that they need to learn this stuff on their own at home. It is almost the "how dare you ask me to do something on my free time to better my self when I can sit here and do nothing." Well that is the only way you are going to better your self, and learn from your mistakes with out affecting something at your work that may affect something with your pay ...

 

As I said at the beginning I have been doing IT for close to 20 years now. In that time I have had my hands on the following:

  • Every version of SunOS/Solaris from 4.1.1 up to the current (11)
  • Every version of Microsoft Windows from 3.11 through Server 2012
  • IBM AIX 3.1.2 through 6
  • VM/ESA
  • OpenVMS
  • SGI IRIX
  • Various distributions of Linux (and this is one of my huge pet peeves, but that is for another post)
  • Every version of MacOS from 7 through the current 10.9
  • Practically every version of VMware from the original VMware workstation 1.0 on Linux, to vSphere 5.1 to VMware fusion 6.
  • BeOS
  • OS2/Warp
  • Novell Netware

And that is just Operating systems, some of which don't even exist any more. The hardware side is so numerous that is hard to even keep track of, but lets just say I got in to computers when an 80286 8MHz was considered fast and bleeding edge, not to mention a Commodore 64, and Atari 800.

 

So what is the moral of this post? Really think if you want to get in to IT, and do you have the thirst for learning and teaching yourself. If you don't have that and don't want to spend some times hours a night learning how stuff works, or if spending an entire weekend at work on a nice summer day doing patches is not your thing, please don't take that type of job. IT is almost like a dedication and devotion, if you don't have the time to do it, you probably shouldn't start it.

23Jan/14Off

Joyent SmartOS network monitoring

My free trial period of my Smart Machine ended, so now I was trying to find a way to monitor my bandwidth usage on my Smart machine. There isn't a "easy" way of doing (like logging in to the portal to look at your account) so I devised a way to do it on my own.

The first part of it will be discussed in this post, and I will do another about how to actually view the results.

First off the easiest way I have found to "watch" network traffic is using the kstat command. On my SmartMachine, I have 2 network interfaces, one that has the public interface on it, and one that has the private interface on it. For my purposes I am only currently watching "net1" which is the external interface.

So the small script I have runs every 10 minutes, and logs the information in to a MySQL table. That table is defined like this:

CREATE TABLE `vmnet` (
`interface` char(10) DEFAULT NULL,
`time` bigint(20) DEFAULT NULL,
`obytes` bigint(20) DEFAULT NULL,
`rbytes` bigint(20) DEFAULT NULL,
`htime` datetime DEFAULT NULL,
KEY `tidx` (`time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

The columns are as follows:

  • interface: which interface we are getting the stats from, right now everything just says net1. But if I were to add net0 it would fit right in.
  • time: time in seconds since the epoch
  • obytes: bytes leaving the interface
  • rbytes: bytes received on the interface
  • htime: human readable time. (Yes i realize I am storing the time twice, and that I can do everything with just time, but what the heck, it is just an extra little storage ;-)...

 

Now that the table in the DB is defined, set the permissions on it. In my case I created a database just for the "netstats"  and there is just the one table in it called vmnet. I created 2 users that have access to the vmnet table. One just for writing the data in from the script, and another for reading the data for part 2 of this.

 

Now for the script, it is pretty simplistic:

#!/bin/bash
#Use kstat to grab interface stats
#Define the interface to look at:
INTF="net1"
VALUES="`kstat -c net -n ${INTF} | egrep \"(obytes64|rbytes64)\"`"
SNAPTIME="`perl -e \"print(time());\"`"
OBYTES="`echo ${VALUES} | grep obytes64 | awk '{print $2}'`"
RBYTES="`echo ${VALUES} | grep rbytes64 | awk '{print $4}'`"
echo "insert into vmnet values ('${INTF}',${SNAPTIME},${OBYTES},${RBYTES},NOW());" | /opt/local/bin/mysql -uUUUUUU -pPPPPPPPPP netstats

 

In the most simplest form, the script runs the kstat command on the requested interface ${INTF} and then uses egrep to grab the obytes64 and rbytes64. It then takes those to values and creates a sql insert and piles that in to mysql command where UUUUUU is the username and PPPPPPPP is the password for the insert use on the netstats database.

I then run this every 10 minutes. And what you end up with is data in the table that looks like this:

+-----------+------------+------------+------------+---------------------+
| interface | time       | obytes     | rbytes     | htime               |
+-----------+------------+------------+------------+---------------------+
| net1      | 1388373702 | 3123241114 | 3977125001 | 2013-12-29 22:21:42 |
| net1      | 1388374200 | 3123381303 | 3977326242 | 2013-12-29 22:30:00 |
| net1      | 1388374457 | 3140146411 | 3977725426 | 2013-12-29 22:34:17 |
| net1      | 1388374800 | 3140170245 | 3977843340 | 2013-12-29 22:40:00 |
| net1      | 1388375400 | 3140526526 | 3978051264 | 2013-12-29 22:50:00 |
+-----------+------------+------------+------------+---------------------+

Next time I will show how to take the data and make something out of it:

graph of network traffic

netstat output

6Oct/13Off

Comcast/XFinity TV lineup for Morgantown, WV

XFINITY TV Line up for Morgantown, WV

Since I keep seeing searches for what channel X is on in Morgantown here is a copy of the current lineup from Comcast for Morgantown, WV

Channel Name Limited Digital Economy Digital Starter Digital Preferred Digital Premier
2 KDKA-2 (CBS Pittsburgh) X X X X X
3 Local Programming X X X X X
4 WTAE-4 (ABC Pittsburgh) X X X X X
5 WDTV-5 (CBS Clarksburg) X X X X X
6 WPGH-53 (FOX Pittsburgh) X X X X X
7 WINP-16 (ION Pittsburgh) X X X X X
8 WNPB-24 (PBS Morgantown) X X X X X
9 WPMY My Network TV (Morgantown) X X X X X
10 QVC X X X X X
11 WPXI-11 (NBC Pittsburgh) X X X X X
12 WBOY-12 (NBC Clarksburg) X X X X X
13 WQED-13 (PBS Pittsburgh) X X X X X
14 WVFX-10 (FOX Clarksburg) X X X X X
15 Government Access X X X X X
16 WPCB-40 (Cornerstone TV) X X X X X
17 Headline News X X X X X
19 NBC Sports Network X X X
21 Inspiration X X X X X
22 WPCW-19 (CW Pittsburgh) X X X X X
23 HSN X X X X X
25 C-SPAN X X X X X
27 WGN X X X X X
28 The Weather Channel X X X X
29 Lifetime X X X X
30 FOX Sports 1 X X X
31 History X X X X
32 CNN X X X X
33 Fox News Channel X X X X
34 TBS X X X
35 ESPN X X X
36 ESPN2 X X X
37 Root Sports X X X
38 Golf Channel X X X
39 Food Network X X X X
40 Animal Planet X X X X
41 Disney Channel X X X X
42 Nickelodeon X X X
43 A&E X X X X
44 PCNC X X X
45 CNBC X X X
46 Travel Channel X X X
47 FX X X X
48 VH1 X X X
49 MTV X X X
50 ABC Family X X X
51 Comedy Central X X X X
52 TLC X X X
53 Discovery Channel X X X X
54 Syfy X X X
55 USA X X X X
56 TNT X X X
57 Bravo X X X
58 HGTV X X X
59 Spike X X X
60 TV Land X X X X
61 BET X X X X
63 AMC X X X X
70 style. X X X
82 CMT X X X
83 Cartoon Network X X X X
89 ShopNBC X X X X X
98 E! X X X X
100 Weatherscan Local X X
101 The HUB X X
102 Science Channel X X
103 Destination America X X
104 Investigation Discovery X X X
105 OWN X X X
106 Military Channel X X
107 Current X X
108 GSN X X
109 BBC America X X
111 BBC World News America X X
112 TBN X X X X X
113 Halogen X X
115 bio. X X X
116 H2 X X X X
117 Disney XD X X
118 Disney Jr X X
120 National Geographic X X
121 Smithsonian Channel X X
122 FOX Sports 1 X
124 MLB Network X X
125 Fox Soccer Channel X X
126 ShopNBC X X X X X
127 Outdoor Channel X X
128 Bloomberg Television X X X
129 G4 X X X
130 Discovery Fit & Health X X
131 ESPN Classic X
132 ESPNews X X
134 DIY X X
135 Cooking Channel X X
137 MTV2 X X
138 Fuse X X
139 MTV Jams X X
140 WE tv X X
141 TCM X X
143 CMT Pure Country X X
144 VH1 Classic X X
146 Fox Movie Channel X X
147 IFC X X
148 Nick Jr. X X
150 TV One X X
152 TeenNick X X
153 Nick2 X X
154 Nicktoons X X
155 VH1 Soul X X
156 GMC X X X
157 Centric X X X
158 The Word Network X X X
159 A SPiRE X X
160 MTV Hits X X
161 Logo X X
162 RLTV X X
163 LMN X X X
164 Sundance Channel X X
165 National Geographic Wild X X
166 FOX Sports 2 X X
167 GAC X X
170 ESPN Goal Line X
171 FCS Atlantic X
172 FCS Central X
173 FCS Pacific X
174 ESPNU X X
176 NuvoTV X X
177 NFL Network X X
184 C-SPAN 2 X X X X
185 C-SPAN 3 X X X
186 Sportsman Channel X X
188 WTAE This TV X X X X X
189 WPGH-The Country Network X X X X X
190 WPXI ME TV X X X X X
192 WDTV-Weather X X X X X
193 WQED X X X X X
194 WQED Create X X X X X
195 WQED The Neighborhood X X X X X
198 TKMI X X X X
201 HBO X X
202 HBO2 X X
203 HBO Signature X X
204 HBO Family X X
205 HBO Comedy X X
206 HBO Zone X X
207 HBO Latino X X
208 HBO West X X
209 Fox Business X X
221 Showtime X
222 Showtime 2 X
223 Showtime Showcase X
224 Showtime Extreme X
225 ION Life X X
227 WINP DT3 X
229 qubo X X
231 TMC (The Movie Channel)
232 TMCX (The Movie Channel Extra)
233 PBS Kids Sprout X X X
235 Flix X X
236 Hallmark Movie Channel X X X
241 Starz X X
242 Oxygen X X X
243 Starz Edge X X
244 Starz Kids & Family X X
245 Starz Cinema X X
247 Starz InBlack X X
248 Encore X X
250 Encore Love X X
251 Ovation X X
252 Encore Westerns X X
253 MoviePlex X X X
254 Encore Suspense X X
255 Hallmark Channel X X X X X
256 Encore Drama X X
258 Encore Action X X
259 truTV X X X X
260 Encore Family X X
262 Indieplex X X
263 Retroplex X X
264 TV Guide Network X X X X X
265 EWTN X X X X X
266 MSNBC X X X
267 Big Ten Network X X
270 Cinemax X
271 MoreMAX X
272 ActionMAX X
273 ThrillerMAX X
274 MAX West X
276 NHL Network X X
277 NFL Network X X
286 beIN Sports X
287 NBA TV X X
288 CBS Sports X X
289 Tennis Channel X
290 TVG Network X
300-307 PPV Movies X X X
341 Playboy TV X X X
342 TEN X X X
343 Julcy X X X
344 REAL X X X
345 Penthouse TV X X X
351 TMC-HD X X
401-446 Music Channels X X X
501-506 Sports PPV X X X
531-544 NHL/MLB Games X X X
560 Local Originiation
561 WFDC (Univision) {Spanish}
563 WMDOLD (UniMas Low Power) {Spanish}
565 WZDCLP {Spanish}
567 GALA {Spanish}
570 CNN Espanol {Spanish}
571 SUR {Spanish}
575 TDCES {Spanish}
577 HISTE {Spanish}
579 HITN {Spanish}
581 BEIN2 {Spanish}
584 FXDEP {Spanish}
585 ESPND {Spanish}
592 BABY1AS {Spanish}
593 DFAME {Spanish}
597 EWTNES {Spanish}
598 LFC {Spanish}
599 ENLUSA {Spanish}
601 MEXCAN {Spanish}
602 52MXI {Spanish}
604 TFORM {Spanish}
605 MULTV2 {Spanish}
606 CBTV {Spanish}
607 XEIPNUS {Spanish}
611 WAPAUS {Spanish}
612 DOMIN {Spanish}
615 CARAI {Spanish}
616 TVCOL {Spanish}
617 TVVEN {Spanish}
618 TVE! {Spanish}
620 TEFEI {Spanish}
621 TVNI {Spanish}
622 ECUAVI {Spanish}
623 SURPERU {Spanish}
626 CENTROA {Spanish}
627 UTLSMUS {Spanish}
630 TR3S {Spanish}
631 mun2 X X
633 THITUS {Spanish}
634 TELEP {Spanish}
635 RITUS {Spanish}
636 BANDAUS {Spanish}
637 VROLA {Spanish}
638 HIPTV {Spanish}
641 DEPELUS {Spanish}
642 PASNUS {Spanish}
643 DEPELC {Spanish}
644 VMEKIDS {Spanish}
645 CMEX {Spanish}
646 LATAMSP {Spanish}
647 CINLUS {Spanish}
648 UNIMWST {Spanish}
649 VMOV {Spanish}
650 UNIP {Spanish}
651 GRNCINE {Spanish}
667 CRIC {Spanish}
699 WNPB-Two (PBS Morgantown) X X X X X
701-710 NBA/MLS PPV X X X
750 HBO-HD X X
751 Showtime-HD X
752 Starz-HD X X
753 Cinemax-HD X
785 iNDemand PPV - HD X X
787 NBA/MLS PPV HD (iNDemand Team) X X
789 iNDemand Game-HD (NHL/MLB) X X
790 iNDemand Game 2-HD (NHL/MLB) X X
799 EWTN-HD X X
802 KDKA-2 HD (CBS Pittsburgh) X X
803 WPGH-HD (FOX Pittsburgh) X X
804 804WTAE-4 HD (ABC Pittsburgh) X X
805 WPCB-40 HD (Cornerstone TV) X X X X X
806 QVC-HD X X
807 WINP-16 HD (ION Pittsburgh) X X X X X
808 WPCW-19 HD (CW Pittsburgh) X X
809 HSN-HD X X
810 WNPB-24 HD (PBS Morgantown) X X
811 WPXI-11 HD (NBC Pittsburgh) X X
812 WPMY-22 HD (My Network TV Pittsburgh) X X
813 WQED-13 HD (PBS Pittsburgh) X X
814 Bloomberg HD X X X
815 Weather Channel-HD X X
816 Headline News HD X X
817 CNN-HD X X
818 MSNBC HD X X
819 CNBC-HD X X
820 Fox News Channel-HD X X
821 Fox Business Channel HD X X
822 Universal-HD X X
823 USA-HD X X
824 FX-HD X X
825 TNT-HD X X
826 TBS-HD X X
827 Spike-HD X X
828 Comedy Central-HD X X
829 Syfy-HD X X
830 Hallmark-HD X X
831 A&E-HD X X
832 Bravo-HD X X
833 E!-HD X X
834 style. HD X X
835 Lifetime-HD X X
836 We tv HD X X
837 TLC-HD X X
838 HGTV-HD X X
839 Food-HD X X
840 Travel Channel-HD X X
841 truTV HD X X
843 Root Sports-HD X X
848 NBC Sports Network-HD X X
849 Golf Channel-HD X X
859 ESPN-HD X X
851 ESPN2-HD X X
852 ESPNews HD X X
853 ESPNU-HD X X
854 CBS Sports- Network HD X X
855 Big Ten Network-HD X X
857 Speed Channel-HD X X
859 MLB Network-HD X X
860 NFL Network-HD X X
861 NFL RedZone-HD X X
862 Tennis Channel-HD X X
864 Outdoor Channel-HD X X
865 TV One HD X X
866 BET-HD X X
867 G4 HD X X
868 Animal Planet-HD X X
869 Discovery-HD X X
870 Velocity HD X X
871 National Geographic-HD X X
872 Science Channel-HD X X
873 Destination America HD X X
874 bio.-HD X X
875 History-HD X X
876 History International-HD X X
877 Disney XD HD X X
878 Cartoon Network-HD X X
879 Nickelodeon-HD X X
880 Disney Channel-HD X X
881 ABC Family-HD X X
882 Palladia HD X X
883 CMT-HD X X
884 MTV-HD X X
885 Fuse HD X X
886 VH1-HD X X
887 GMC HD X X X
889 AMC-HD X X
890 TCM HD X X
891 Encore HD X X
892 MGM HD X X
893 IFC HD X X
894 Hallmark Movie Channel HD X X
895 LMN-HD X X
899 Investigation Discovery-HD X X
905 WDTV - HD X X X X X
910 WVFX - HD X X X X X
912 WBOY-12 HD (NBC Clarksburg) X X
915 Smithsonian Channel HD X X
917 Sportsman Channel-HD X X
946 Ovation HD X X
980 ESPN 3D X X
981 Xfinity 3D HD X X
1116 Bloomberg HD X X X
1225 BBC America HD X X X
1262 NAT GEO WILD HD X X
1325 GSN HD X X
1334 Oxygen HD X X X
1505 Sprout HD X X X
1511 Hub HD X X
1711 NHL HD X X
1712 NBA TV HD X X
1770 NBA TV HD X X