the end of LCD-hacks?

A project log for Ridiculous [LCD] Display Hacks

What more can I say?

Eric HertzEric Hertz 10/31/2016 at 22:520 Comments

UPDATE: RIDONCULOUS HACKING to obtain EPG-info via an old tuner, scroll down a bit...

Whelp, there's a pretty-durn-good find, if I say so...

Sitting in the laundry room atop the donation-bin...

Apparently the only things wrong with it are:

A) Batteries leaked in the remote... non-functional until a thorough cleaning

B) Stand is extremely wobbly, touching the on-screen buttons has no effect without grabbing the display from behind for support.

C) The Menu interface is funky... but I think I'm getting the gist.

D) NO EPG!!! How the hizeck am I supposed to plan my day?

Hack-Potential: My digital-receiver I use for my CRT has a serial port hidden in the case... and as I recall the thing actually outputs the EPG-info when it's received... hmm...


So... yeah... That's *way* outta my budget... 22in, no less... biggest non-CRT in my collection by a good 4 inches. Should I replace my 33in TV? Gain some surface-space? Maybe even hang it on the wall?

Crud, do I understand these newfangled resolution-standards correctly? 1080p = 1920 x 1080? Lessee, my 18incher is 1280x1024, my SGI is 1600x1024... dagnabbit, TV or desktop? Maybe both... sheesh...

Financially, I should probably sell the thing... oy, do I understand this correctly, too? You can buy a screen of this size/resolution for less than $150 new?! Man, how times've changed.

Whelp, some thinking to do, I guess... And now I've got HDMI to go with my new Raspberry Pi Zero!



So, Best I Can Tell, from pressing of 'all the buttons' the best you can get with this TV is a listing of the *current* show, and a description about it. But, no info about what shows are coming up in the future...

So, I've got a "Digital-Stream" Digital-Tuner I've been using for my old CRT, and it happens to have a serial port on-board that I, of course, hacked into the day I got the thing. I got some drawings/test-patterns and even text ('sm_printf', no less!) displayed on-screen a while-back. Pretty cool what can be done with this thing via the serial-port!

I wrote down all my experiments... it takes a bit to get 'sm_printf' working, including stopping the video-playback, as I recall, but it does work.

(Apparently, someone else came up with a pretty in-depth analysis and an awe-inspiring level of hackery, but not the info I'm currently looking for)

There's lots of debug-data, and also a Mini-Shell... typing '?' causes a listing of a bunch of functions which can be called... Debug-wise, whenever new EPG info is downloaded, it shows an update, but does *not* show the info. It's taken a bit of experimenting with a bunch of the functions... but there is, in fact, a way to dump that info to the serial port... The *obvious* one would be 'epg_list', but executing that causes a listing of basically only the channel numbers and whether or not the EPG-data has been downloaded.

So I went through the list of 232 functions, looking for others... There're a couple really obvious looking ones such as 'PrintEit' and 'PrintEtt'... I dunno what an Eit or Ett is, but whenever there's an EPG-table update, it mentions Eit[#]:

[APP tEpgSca 49] 0142 ******** epgEventEitReceived, Eit[6], 8/8 tables
[APP tEpgSca 49] 0142 ******** epgEventEitComplete, rf 39, subch [2] source id 3
[APP tEpgSca 49] 0143 ******** epgEventEttReceived, Ett[0][1], 1/43 tables
[APP tEpgSca 49] 0144 ******** epgEventEttReceived, Ett[0][2], 2/43 tables
so thought I'd try those Print* functions... and the whole thing rebooted.

Interestingly, it actually shows an disassembly-listing of where it crashed... pretty cool, but beyond me at the moment, and not particularly necessary. Here's a sample, 'cause I think it's cool anyhow:

>[DATA ABORT:4] at 0x0ed2a0(Task tcb:0x2423c4, miniShe ), uptime 1737769 ms <<
>> Program counter at Exception       : 0x000ed2a0
        000ed294  ebffbe1a  BL       0xdcb04 == OS_DbgPrintf()+0x0000
        000ed298  e5953004  LDR      r3,[r5,#4]
        000ed29c  e1a04286  MOV      r4,r6,LSL #5
     ** 000ed2a0  e19410b3  LDRH     r1,[r4,r3]
        000ed2a4  e59f00c4  LDR      r0,0xed370
        000ed2a8  ebffbe15  BL       0xdcb04 == OS_DbgPrintf()+0x0000
        000ed2ac  e5953004  LDR      r3,[r5,#4]

Anyways, I went through *all* the other functions one-by-one looking for other such things... Found a few that looked promising, but nothing did the job.

So finally went back to that *most-obvious* 'epg_list' and tried a bunch of arguments... getting exactly the same listing of merely the channel numbers and whether the EPG's been downloaded.

Shell> epg_list <various arguments, e.g. '0', '0 0'>
MiniShell: [epg_list]
call function of '0x0008cf8c'
Dmc_EpgPrintAllTables (id 0, source_id 0)
==== Summary List of all EPG ====
 (0) id 9, num subch 3, 7 sec
     [0] source id 1, 9-1 [K***-HD], #3,  active, 7 sec, Incomplete!!
     [1] source id 2, 9-2 [Vme], #4,  active, 0 sec, Incomplete!!
     [2] source id 3, 9-3 [Create], #5,  active, 0 sec, Incomplete!!
 (1) id 39, num subch 3, 105 sec
     [0] source id 1, 7-1 [K***-DT], #1,  active, 38 sec, Completed
     [1] source id 2, 7-2 [K***-SD], #2,  active, 28 sec, Completed
     [2] source id 3, 7-3 [K*** 3], #3,  active, 37 sec, Completed

call 0x8cf8c result = 0x0 (0)
[BASIC TASK] cmd(25), subCmd( 0)
[MW EA] Monitor Start

Looking more closely, I realized I wasn't using the *right* arguments. Right... Obvious... "(id 0, source_id 0)" shoulda been enough to get it...

Shell> epg_list 39 3
MiniShell: [epg_list 39 3]
call function of '0x0008cf8c'
Dmc_EpgPrintAllTables (id 39, source_id 3)

Print EPG Tables of Ch 39, Subch 0..

 [2] source id 3, 7-3 [K*** 3], #3, active, 37 sec, Completed
   MGT     : 0x32dad4, ver 17
   preMGT  : 0x328c54, ver 17
   TVCT    : 0x328bd4, ver 0
   STT time: 0x4542c3c1, (2016/11/1 Tue 11:43:00 [tz+9])
   EIT-array : 0x43aca4

...ETT-v : 0x32a054
      ETT ETM_id 00030000, event 0, ver 17
         (eng) Address

...EIT-0 : 0x2f93b4 (pid 0x1d00)  ETT-array: 0x2f92c0
      EIT source_id 3, ver 17, 6 events
         event[0]: id: 0x0039, 11/1  9:00:03 ~  9:30:03, ETM 1 (ThisPTC)
            (eng) Roseanne
             (eng) To celebrate Halloween, their favorite holiday, the Conners invite friends and family members over to help them transform their home into the scariest house on the street; Dan and Roseanne become engaged in an escalating prank war.
         event[1]: id: 0x003A, 11/1  9:30:03 ~ 10:00:03, ETM 1 (ThisPTC)
            (eng) Roseanne
             (eng) Roseanne learns a lot about the opposite sex when her lumberjack costume for a Halloween party turns out to be a little too convincing; Dan grows upset when he learns that D.J. wants to dress up as a witch for Halloween.


So, am-thinkink: I can have a script running that tests 'epg_list' until it says "Complete". Then, flip to the next station, and do the same... It'll continuously cycle through the channels downloading the lists... Then I could e.g. connect it to my computer and make a little script that'll show a listing of only the times and show-names, but then can get more info about the particular show if I want to... yahknow, kinda like a "TV-Guide"... and... wait, doesn't that exist on the internet?


So that was the first step of ridonculosity-realized.

The next step was... "Well, I'd really rather see it *on* the (new) TV... how can I do that?"

(I'll need a remote to browse the list... we'll come back to that once I've figured out this other stuff...).

So then I'm thinking... well, I could either A) see whether there's a serial port in the TV with such an open UI as this one, maybe so sophisticated I could actually "printf" straight to the screen... But, the level of openness of this guy is *shocking* to me, so I doubt the TV would, as well...

So, other options...?

Spose I could connect something like a PiZero to the HDMI input, or even composite....

Oh Snap. Composite.

Right...? The friggin' Digital-Tuner has all this functionality built-in with a composite output and a remote.



Only annoyance, then, is that I'll have to use two different remotes, and change channels twice, but yahknow... (OTOH, now I have two DTV tuners... I could record one show and watch another at the same time!)

Ridonculosity-3-realized: Yeah, I could just look up or whatever... But that's not the same. Using the remote is much more comfortable.