The Lonely Coder

    Multimedia, coding and hacking in general…

    It’s summer and summer means Corona beer and Corona beer means Chili.

    For all you chili lovin’ swedish speaking fellows out there i’ve resurrected the “North Texas Red” recipe previously found at http://www.hornfeldt.se/chili.html. It’s in swedish but that’s just the way it is. Even if you do not speak swedish you might still appreciate the Spotify playlist I’ve prepared for these events

    Enjoy!

    Detta recept fanns ursprungligen på http://www.hornfeldt.se/chili.html men sidan verkar numera nere. Tack vare archive.org har jag lyckats återskapa den igen. Jag (Andreas) har även lagt in lite kommentarer i kursiv stil i orginaltexten nedan.


    VÄRLDENS BÄSTA CHILI

    Receptet hittade vi ursprungligen i en bok av Texas-journalisten
    Francis X Tolbert, en man som vigde sitt liv åt denna eldiga köttgryta.

    Det hela började på det tidiga 60-talet då Tolbert skrev en artikel som
    fick rubriken “Jakten på den äkta chilin”.

    Under de kommande åren fick han 48 000 brevsvar från världens alla
    hörn. Han läste, lagade, reste, provåt och intervjuade levande legender
    som Cap Warren, den siste ranchkocken som fortfarande kokade
    mat åt sina cowboys på en vedeldad spis bakpå den täckta kokvagnen.

    Ganska snart kunde Tolbert slå fast vad som a b s o l u t inte får
    finnas med i en chili:

    • tomater
    • vita bönor
    • gul lök
    • köttfärs

    Äkta chili lagar man nämligen på hela köttbitar och rätt lagad ska den
    vara just vad namnet chili con carne antyder: rödpeppar med en
    viss tillsats av kött.

    Det stora problemet visade sig vara att hitta den rätta blandningen av
    olika pepparsorter så att chilin får en bred fyllig hetta som varar länge
    och inte enbart blir olidligt skarp.

    Till sist tvingades Tolbert arrangera ett världens första chili-VM och det
    recept som vi publicerar här är en variant av det som segrade
    - NORTH TEXAS RED.

    Det recept som följer är en lätt försvanekad version. Ingen som prövat det har
    klagat på styrkan, men många har haft svårt att hitta de rätta ingredienserna.
    För er som bor i Stockholm rekommenderar vi en butik som heter BBQ & Chili
    som har det mesta i chili-väg och dessutom en stor sortering salsor och såser.

    Frukt och grönt -butiken i Hötorgshallen i Stockholm har det man behöver i Chilifruktväg (Andreas anm.)

    Det här är vad du behöver:

    • En mycket stor svart järngryta
    • En stekpanna
    • En liten kastrull
    • En helflaska tequila
    • Sex burkar ljust öl, helst det mexikanska Corona.
    • 5 torkade ancho-pepparfrukter (De är stora, mörkt brunröda och finns i
      affärer som säljer latinamerikansk mat. I nödfall kan de ersättas med en
      blandning av mörkrött chilipulver och ett antal flådda, urkärnade
      röda paprikor.)
    • 1 chipotle-peppar (Röd, rökt. Finns konserverad i latinamerikanska
      affärer.)
    • 3 birdseye-pepparfrukter (Små spetsiga klarröda. Kan ersättas av
      torkad, mald piri-piri).
    • 4 jalapeno-pepparfrukter (Knubbiga, gröna. Finns på burk i de flesta
      välsorterade livsmedelsaffärer. Ta den starka varianten.)
    • Baconfett (eller olja) att steka i.
    • 10 stora vitlöksklyftor, grovt hackade.
    • 5 kilo oxkött, skuret i centimeterstora tärningar.
    • En halv kopp mjöl.
    • En kopp chilipulver.
    • Två koppar mörk oxbuljong.
    • 2 matskedar spiskummin. (Kännarna kan inte komma överens om
      kryddan ska rostas innan den används eller inte.)
    • 2 matskedar oregano.
    • 2 matskedar malda korianderfrön.
    • 1/2 matsked socker.
    • Salt, efter smak. Börja försiktigt!
    • Lite grovt majsmjöl, masa harina.

    Så här gör du:

    1. Ta dig en rejäl tequila. En platta med gamla Hank Williams-låtar bidrar
      också till så att det rätta chili-perspektivet på tillvaron infinner sig.
    2. Börja sedan med pepparn. Rensa bort stjälkar och frön. Koka den torkade
      pepparn 15 minuter under lock, ställ åt sidan och låtsvalna.
    3. Rensa och hacka den övriga pepparn. Ställ åt sidan. (Här är
      en varning på plats. Peppar är starkt. Den BRÄNNS. Se upp för
      ångorna när du kokar och tvätta händerna noga efteråt. Och
      tänk noga på vad då gör med fingrarna det närmaste dygnet.
      Om du petar dig i näsan kan du lika gärna göra det med
      lödkolven.)
    4. Ta ett glas tequila till, ett rejält glas. Det kommer att behövas. Nu
      börjar det nämligen dra ihop sig.
    5. Fräs vitlöken mjuk och brun. Lägg i grytan.
    6. Öka värmen i stekpannan och börja stek köttet. Ta lite i sänder och rör
      om ordentligt så att bitarna steks på alla sidor. Lägg ner i grytan. Detta är
      ett varmt, osigt och tidsödande slitgöra som kräver både tålamod och tequila.
    7. Blanda mjöl och chilipulver. Strö över köttet i grytan.
    8. Sila av den blötlagda pepparn, men spara vattnet. Mosa den kokta
      pepparn, tillsätt sedan all peppar till köttet.
    9. Häll på pepparvattnet, oxbuljongen och öl tills vätskan täcker köttet.
      Koka upp.
    10. Nu är chilin på väg. En nöjd kock kan ta ett steg tillbaka, beundra sin
      skapelse och belönar sig själv med ytterligare en tequila, raskt åtföljd
      av det resterande ölet.
    11. Låt chilin småkoka. Rör ner spiskummin, oregano och koriander. Rör ofta
      så att mästerverket inte bränns fast i botten.
    12. Fortsätt kokningen tills köttet börjar falla sönder. Det bör ta två,
      tre timmar.
    13. Tequila!!!
    14. Det kan hända att chilin är lite lös när den närmar sig slutkokningen.
      Riktiga Texasbor reder den då med grovt majsmjöl.
    15. Gör slut på den sista skvätten tequila (om du inte redan gjort det).
    16. Ta av grytan och skumma bort det fett som samlats ovanpå.

    Den här satsen räcker till ett tjugotal normala människor, men högst
    tio chiliälskare.

    Servera chilin i små, djupa tallrikar. Många gillar att äta den med
    majschips till, en klick cremé fraiche eller lite grovt riven cheddarost
    ovanpå. Servera sallad, bröd, guacamole (avocadoröra) och stora
    mängder ljust öl till.

    Musiken är nästan lika viktig. Satsa på någon genuint: Hank Williams,
    Buddy Holly, Joe Ely, Jerry Jeff Walker, Flaco Jiminez, Butch Hancock,
    Commander Cody and his Lost Planet Airmen eller Gram Parsons.
    Fram mot natten passar det utmärkt att spela Freddy Fenders odödliga
    “Before the next teardrops falls”, Doug Sahms “Wasted days and wasted
    nights” eller Creedende Clearwater Revivals “Lodi”.

    För dig som använder Spotify har jag gjort en färdig spellista

    Det går också att spela Wilco, Weeping Willows och helst bör alla sjunga
    allsång i någon gammal Carter Family sång typ “Will The Circle Be Unbroken”
    Volymen bör vara öronbedövande. Sjung med. Skråla gärna. Och kom ihåg,
    en äkta chiliafton S K A spåra ur fram mot natten.


    FOTNOT 1: Sedan första publiceringen har vi mottagit en rad klagomål mot
    tequilan i detta recept. De som har hört av sig har varit rörande ense om
    att en helflaska är alldeles för lite. Naturligvis var den mängden enbart en
    rekommendation, anpassad för en person.

    Och kollegan Peter Svensson har förslagit en intressant variant. Den
    följer här:

    SNABB-CHILI:

    I nödfall kan alla ingredienser utom tequilan utgå. I sådana fall
    förkortas koktiden avsevärt.


    FOTNOT 2: Nyårsafton 1990 lagade Jan Gradvall och Stefan
    Lindström chili och följde detta recept slaviskt. Ingen av dem
    minns någonting efter klockan 18.00 men överlevande har berättat
    att kvällen var ovanligt lyckad.


    FOTNOT 3: Texten ovan är en lätt omarbetad och uppdaterad
    version av ett recept som publicerats två gånger i Expressen. Först
    1988 och sedan 1991. Under några år var detta den mest efterfrågade
    artikeln i tidningens arkiv. Vännerna på textarkivet berättar att de till
    och med fick en förfrågan på en kopia från Saudiarabien under
    Desert Storm.


    FOTNOT 4: denna text får fritt spridas och kopieras under förutsättning
    att ni inte blandar bönor i chilin.


    Some people, after have read my last post, have asked what kind of HTPC, etc I use. So, here is a quick overview:

    Hardware

    • Chassis: Fanless HFX Mini Chassis with 130W external power supply.
      Fairly expensive though. I think I payed around 400€ for just the case without electronics (PSU, DVD-drive, etc). It’s quite heavy too. But it’s good…. because it’s heavy :)
    • ASUS P5B MB, Intel Core2Duo and nVidia 8000 series GPU with HDMI output.
      Fairly standard. Not much to say about it.
    • M-Audio externa USB 5.1 audio device.
      I had a lot of problems with noise from the internal audio card so I was more or less forced to use an external one
    • Sonic Impact T-Amp external amplifiers for Front and Back speakers.
      These are pretty crappy actually. I’ve run into some problems with corrosion on the volume dials so they tend to produce bad sound from time to time. Stay away from those. You never get more than you pay for.
    • USB power manager USB controlled power list.
      I use this one to turn on/off the amplifiers and the subwoofer when the HTPC enter/leaves standby mode.
    • Logitech S 510 Cordless Keyboard/Mouse + Remote
      I really like this one. I’ve tried a two other remotes, Logitech diNovo Mini and SoundGraph iMon Pad, but I still think the S 510 remote is best for one simple reason: Fewer buttons.

    Software

    • Ubuntu 9.04 installed on a 4 GB USB pendrive with Reiser FS.
      Don’t want a noisy hard drive and SSD drives are still a bit too expensive to be justified. All media is kept on a server that’s located elsewhere.
    • Showtime spawned via an auto-logged-in user.

    Pictures

    Heat pipe and cable salad is served…

    This is where I live. Upstairs from me lives a nice Mac.

    And Showtime running on the TV

    A few months ago the HTPC (with my Showtime installation) refused to start. Power LED were lit, but nothing else happened. After quite some troubleshooting I realised that the machine would hang if connected to my TV. The TV did not even have to be powered in order to block the system boot. My initial thought was that somehow the DDC bus had been damaged in one way or another (ESD, short circuit, some weird ground loop or whatever). Fortunately the TV has two HDMI connectors so I just switched to the other one and everything was fine and dandy. Until a few days ago…

    The same problem was now exhibited on the other HDMI port. This definitely called for some deeper analysis. I didn’t want to buy a new TV just because of this. All other parts of it worked just fine.

    First approach – Open the thing and do some measurements. For some reason beyond my understanding LG had been kind enough to bundle printed schematics with the TV. This picture shows one of the HDMI connectors and the I2C EEPROM holding the EDID information for it. The only thing powered by the computer are those EDID EEPROMs.

    So our prime suspects where IC1201 and IC1202 (outside of the image above), but both highlighted in this photograph of the PCB:

    Initially I thought that the I2C bus was somehow locked due to either SDL or SDC constantly being pulled low. I’ve prior experience with I2C bus lockups like this due to malfunctioning hardware. So I did some measurements with my multimeter. Everything seemed OK. I had also realised that if I plugged in the HDMI cable after boot the system would not hang. It just was just not able detect the monitor even though I explicitly asked it to reprobe all monitors. So next idea was to actually try to see what was going on over the I2C bus…

    I decided to sacrifice an HDMI cable and build an I2C bus snooper using the parallel port. Perhaps not the most beautiful thing I’ve made, but hey, it worked just fine.

    Now, things started to get interesting. I also found some snooping code on this page. Surprisingly the snooper worked at first attempt. I didn’t even care to check that I didn’t mixed up SDA and SCL. Apparently Murphy had other things to mess up that day.

         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: ff ff ff ff ff ff ff ff 1e 6d 6c 75 7f d1 02 00    ........?mlu???.
    10: 0b 10 01 03 80 46 27 78 ea d9 b0 a3 57 49 9c 25    ?????F'x????WI?%
    20: 11 49 4b a5 6e 80 31 40 01 01 01 01 45 40 01 01    ?IK?n?1@????E@??
    30: 61 40 01 01 01 01 1b 21 50 a0 51 00 1e 30 48 88    a@?????!P?Q.?0H?
    40: 35 00 bc 88 21 00 00 1c 4e 1f 00 80 51 00 1e 30    5.??!..?N?.?Q.?0
    50: 40 80 37 00 bc 88 21 00 00 18 00 00 00 fc 00 33    @?7.??!..?...?.3
    60: 37 4c 43 32 52 2d 5a 48 0a 20 20 20 00 00 00 fd    7LC2R-ZH?   ...?
    70: 00 38 4b 1f 3d 09 00 0a 20 20 20 20 20 20 01 c1    .8K?=?.?      ??
    

    If you spend some time reading more about EDID, it says that byte 00–07 is Header information “00h FFh FFh FFh FFh FFh FFh 00h”. This is clearly not what’s in my EDID ROM. Also the last byte of the EDID is a checksum byte which should be written such that if you sum all 128 bytes the sum should be zero. When I summed the bytes it ended up being 0xFE. Another evidence that the first and last byte in the EDID header has been changed from 00 to FF. The obvious strategy now was to rewrite those bytes back to zero again. So I had to build a full blown I2C interface:

    This is based on the Linux kernel parport interface. I loaded the i2c_parport kernel module and run the i2cdetect tool. Nothing was found.

    Well, after a fixing a few incorrect solderings I finally got it running (It’s so much easier to write software than to build hardware, that’s for sure). It did detect something at address 0×50, just where the EDID EEPROM is supposed to be located. And even when clocking out the bits myself I could confirm that the two bytes in the header were corrupted.

    So now, all that was left was to modify those bytes back. Or? Not really, the EEPROM is write protected (Pin 7 is pulled low, just look at the schematics) so this is not possible. But what the heck, at least I could try it.

    
    root@htpc:~/nvidia# i2cset 3 0x50 0x00 0x00
    No size specified (using byte-data access)
    WARNING! This program can confuse your I2C bus, cause data loss and worse!
    DANGEROUS! Writing to a serial EEPROM on a memory DIMM
    may render your memory USELESS and make your system UNBOOTABLE!
    I will write to device file /dev/i2c-3, chip address 0x50, data address
    0x00, data 0x00, mode byte.
    Continue? [y/N] y
    Value 0x00 written, readback matched
    

    Wait? What’s that: ”readback matched”. It actually succeeded to write the byte?!

    
    root@htpc:~/nvidia# i2cset 3 0x50 0x07 0x00
    No size specified (using byte-data access)
    WARNING! This program can confuse your I2C bus, cause data loss and worse!
    DANGEROUS! Writing to a serial EEPROM on a memory DIMM
    may render your memory USELESS and make your system UNBOOTABLE!
    I will write to device file /dev/i2c-3, chip address 0x50, data address
    0x07, data 0x00, mode byte.
    Continue? [y/N] y
    Value 0x00 written, readback matched
    
    root@htpc:~/nvidia# i2cdump -r 0-127 -y 3 0x50 c
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 ff ff ff ff ff ff 00 1e 6d 6c 75 7f d1 02 00    ........?mlu???.
    10: 0b 10 01 03 80 46 27 78 ea d9 b0 a3 57 49 9c 25    ?????F'x????WI?%
    20: 11 49 4b a5 6e 80 31 40 01 01 01 01 45 40 01 01    ?IK?n?1@????E@??
    30: 61 40 01 01 01 01 1b 21 50 a0 51 00 1e 30 48 88    a@?????!P?Q.?0H?
    40: 35 00 bc 88 21 00 00 1c 4e 1f 00 80 51 00 1e 30    5.??!..?N?.?Q.?0
    50: 40 80 37 00 bc 88 21 00 00 18 00 00 00 fc 00 33    @?7.??!..?...?.3
    60: 37 4c 43 32 52 2d 5a 48 0a 20 20 20 00 00 00 fd    7LC2R-ZH?   ...?
    70: 00 38 4b 1f 3d 09 00 0a 20 20 20 20 20 20 01 c1    .8K?=?.?      ??
    

    Yep, the other address seemed to play along nice too.

    Next I Connected it all back together again as it is supposed to be and it worked again :-)

    Having initially been bothered by the fact that the bytes somehow changed even though the EEPROM is write protected I now rather believe that the write protect pin is not correctly hooked up. Either it’s left floating or the “Don’t mount” optional resistor is actually mounted. But right now I don’t care to open the TV once again just to check that. Perhaps I’ll look into it if this happens again.

    From time to time I’d like to see what defines GCC sets as default. It usually takes some time for me to figure out. So instead of having to look it up every time on some obscure web page I’ll keep a copy of it here (as if this page is not obscure?):

    :| gcc -dM -E -x c -

    Ok, This blog used to be a blog about HTS (my Media player project), but it no longer is. I thought it would be more useful and interesting to use it for sharing ideas and findings about coding in general. Also, the idea of trying to maintain a web page in Wordpress for an open source project failed miserably. Instead I resorted to use a shell script and some other trickery for composing the HTS webpage. The pages are not that dynamic, so it really doesn’t matter that it is rebuilt from scratch every time. And by using custom scripts I can include documentation and other automatically generated stuff right into the site.