<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Christian Gmeiner</title>
    <link>https://christian-gmeiner.info/</link>
    <description>Recent content on Christian Gmeiner</description>
    <image>
      <title>Christian Gmeiner</title>
      <url>https://christian-gmeiner.info/papermod-cover.png</url>
      <link>https://christian-gmeiner.info/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 20 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://christian-gmeiner.info/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GLES3 on etnaviv: Fixing the Hard Parts</title>
      <link>https://christian-gmeiner.info/2026-02-20-gles3-on-etnaviv-fixing-the-hard-parts/</link>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2026-02-20-gles3-on-etnaviv-fixing-the-hard-parts/</guid>
      <description>&lt;p&gt;This is the start of a series about getting OpenGL ES 3.0 conformance on Vivante GC7000 hardware using the open-source etnaviv driver in Mesa. Thanks to &lt;a href=&#34;https://www.igalia.com/&#34;&gt;Igalia&lt;/a&gt; for giving me the opportunity to spend some time on these topics.&lt;/p&gt;
&lt;h2 id=&#34;where-we-are&#34;&gt;Where We Are&lt;/h2&gt;
&lt;p&gt;etnaviv has supported GLES2 on Vivante GPUs for a long time. GLES3 support has been progressing steadily, but the remaining dEQP failures are the stubborn ones - the cases where the hardware doesn&amp;rsquo;t quite do what the spec says, and the driver has to get creative.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My first Vulkan extension</title>
      <link>https://christian-gmeiner.info/2026-02-13-my-first-vulkan-extension/</link>
      <pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2026-02-13-my-first-vulkan-extension/</guid>
      <description>&lt;p&gt;After years of working on etnaviv - a Gallium/OpenGL driver for Vivante GPUs - I&amp;rsquo;ve been wanting to get into Vulkan. As part of my work at &lt;a href=&#34;https://www.igalia.com/&#34;&gt;Igalia&lt;/a&gt;, the goal was to bring &lt;a href=&#34;https://docs.vulkan.org/refpages/latest/refpages/source/VK_EXT_blend_operation_advanced.html&#34;&gt;&lt;code&gt;VK_EXT_blend_operation_advanced&lt;/code&gt;&lt;/a&gt; to lavapipe. But rather than going straight there, I started with Honeykrisp - the Vulkan driver for Apple Silicon - as a first target: a real hardware driver to validate the implementation against before wiring it up in a software renderer. My first Vulkan extension, and my first real contribution to Honeykrisp.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiple Render Targets for etnaviv</title>
      <link>https://christian-gmeiner.info/2025-01-16-mrt/</link>
      <pubDate>Thu, 16 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2025-01-16-mrt/</guid>
      <description>&lt;p&gt;Modern graphics programming revolves around achieving high-performance rendering and visually stunning effects. Among OpenGL’s capabilities, Multiple Render Targets (MRTs) are particularly valuable for enabling advanced rendering techniques with greater efficiency.&lt;/p&gt;
&lt;p&gt;With the latest release of &lt;a href=&#34;https://docs.mesa3d.org/relnotes/24.3.0.html&#34;&gt;Mesa 24.03&lt;/a&gt; and the commitment from &lt;a href=&#34;https://www.igalia.com/&#34;&gt;Igalia&lt;/a&gt;, the etnaviv GPU driver now includes support for MRTs. If you’ve ever wondered how MRTs can transform your graphics pipeline or are curious about the challenges of implementing this feature, this blog post is for you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CI-Tron: A Long Road to a Better Board Farm</title>
      <link>https://christian-gmeiner.info/2024-10-30-ci-tron-a-long-road-to-a-better-board-farm/</link>
      <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2024-10-30-ci-tron-a-long-road-to-a-better-board-farm/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a big supporter of finding problems before they get into the code base. The earlier you catch issues, the easier they are to fix. One of the main tools that helps with this is a Continuous Integration (CI) farm. A CI farm allows you to run extensive tests like &lt;a href=&#34;https://github.com/KhronosGroup/VK-GL-CTS&#34;&gt;deqp&lt;/a&gt; or &lt;a href=&#34;https://piglit.freedesktop.org&#34;&gt;piglit&lt;/a&gt; on a merge request or even on a private git branch before any code is merged, which significantly helps catch problems early.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It All Started With a Nop - Part I</title>
      <link>https://christian-gmeiner.info/2024-07-11-it-all-started-with-a-nop-part1/</link>
      <pubDate>Thu, 11 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2024-07-11-it-all-started-with-a-nop-part1/</guid>
      <description>&lt;style type=&#34;text/css&#34;&gt;
     
    .notice {
        --title-color: #fff;
        --title-background-color: #6be;
        --content-color: #444;
        --content-background-color: #e7f2fa;
    }

    .notice.info {
        --title-background-color: #fb7;
        --content-background-color: #fec;
    }

    .notice.tip {
        --title-background-color: #5a5;
        --content-background-color: #efe;
    }

    .notice.warning {
        --title-background-color: #c33;
        --content-background-color: #fee;
    }

     
    @media (prefers-color-scheme:dark) {
        .notice {
            --title-color: #fff;
            --title-background-color: #069;
            --content-color: #ddd;
            --content-background-color: #023;
        }

        .notice.info {
            --title-background-color: #a50;
            --content-background-color: #420;
        }

        .notice.tip {
            --title-background-color: #363;
            --content-background-color: #121;
        }

        .notice.warning {
            --title-background-color: #800;
            --content-background-color: #400;
        }
    }

    body.dark .notice {
        --title-color: #fff;
        --title-background-color: #069;
        --content-color: #ddd;
        --content-background-color: #023;
    }

    body.dark .notice.info {
        --title-background-color: #a50;
        --content-background-color: #420;
    }

    body.dark .notice.tip {
        --title-background-color: #363;
        --content-background-color: #121;
    }

    body.dark .notice.warning {
        --title-background-color: #800;
        --content-background-color: #400;
    }

     
    .notice {
        padding: 18px;
        line-height: 24px;
        margin-bottom: 24px;
        border-radius: 4px;
        color: var(--content-color);
        background: var(--content-background-color);
    }

    .notice p:last-child {
        margin-bottom: 0
    }

     
    .notice-title {
        margin: -18px -18px 12px;
        padding: 4px 18px;
        border-radius: 4px 4px 0 0;
        font-weight: 700;
        color: var(--title-color);
        background: var(--title-background-color);
    }

     
    .icon-notice {
        display: inline-flex;
        align-self: center;
        margin-right: 8px;
    }

    .icon-notice img,
    .icon-notice svg {
        height: 1em;
        width: 1em;
        fill: currentColor;
    }

    .icon-notice img,
    .icon-notice.baseline svg {
        top: .125em;
        position: relative;
    }
&lt;/style&gt;&lt;div class=&#34;notice note&#34; &gt;
    &lt;p class=&#34;notice-title&#34;&gt;
        &lt;span class=&#34;icon-notice baseline&#34;&gt;
            &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 128 300 300&#34;&gt;
  &lt;path d=&#34;M150 128c82.813 0 150 67.188 150 150 0 82.813-67.188 150-150 150C67.187 428 0 360.812 0 278c0-82.813 67.188-150 150-150Zm25 243.555v-37.11c0-3.515-2.734-6.445-6.055-6.445h-37.5c-3.515 0-6.445 2.93-6.445 6.445v37.11c0 3.515 2.93 6.445 6.445 6.445h37.5c3.32 0 6.055-2.93 6.055-6.445Zm-.39-67.188 3.515-121.289c0-1.367-.586-2.734-1.953-3.516-1.172-.976-2.93-1.562-4.688-1.562h-42.968c-1.758 0-3.516.586-4.688 1.563-1.367.78-1.953 2.148-1.953 3.515l3.32 121.29c0 2.734 2.93 4.882 6.64 4.882h36.134c3.515 0 6.445-2.148 6.64-4.883Z&#34;/&gt;
&lt;/svg&gt;

        &lt;/span&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>hwdb - The only truth</title>
      <link>https://christian-gmeiner.info/2024-04-12-hwdb/</link>
      <pubDate>Fri, 12 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2024-04-12-hwdb/</guid>
      <description>&lt;p&gt;Trusting hardware, particularly the registers that describe its functionality, is fundamentally risky.&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;tl;dr&lt;/h1&gt;
&lt;p&gt;The etnaviv GPU stack is continuously improving and becoming more robust. This time, a hardware database was incorporated into Mesa, utilizing header files provided by the SoC vendors.&lt;/p&gt;
&lt;p&gt;If you are interested in the implementation details, I recommend checking out this &lt;a href=&#34;https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28574&#34;&gt;Mesa MR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Are you employed at &lt;a href=&#34;https://www.verisilicon.com/&#34;&gt;Versilicon&lt;/a&gt; and want to help? You could greatly simplify our work by supplying the community with a comprehensive header that includes all the models you offer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Year 2023 in Retrospect</title>
      <link>https://christian-gmeiner.info/2022-12-26-end-of-year/</link>
      <pubDate>Tue, 26 Dec 2023 09:03:20 -0800</pubDate>
      <guid>https://christian-gmeiner.info/2022-12-26-end-of-year/</guid>
      <description>&lt;p&gt;Holidays are here and I have time to look back at 2023. For six months I have been working for &lt;a href=&#34;https://www.igalia.com/&#34;&gt;Igalia&lt;/a&gt; and what should I say?&lt;/p&gt;
&lt;p&gt;I &amp;#x2764;&amp;#xfe0f; it!&lt;/p&gt;
&lt;p&gt;This was the best decision to leave my comfort zone of a normal 9-5 job. I am so proud to work on open source GPU drivers and I am able to spend much of my work time on etnaviv.&lt;/p&gt;
&lt;h2 id=&#34;driver-maintenance&#34;&gt;Driver maintenance&lt;/h2&gt;
&lt;p&gt;Before adding any new feature I thought it would be great idea to improve the current state of etnaviv&amp;rsquo;s gallium driver. Therefor I reworked some general driver &lt;a href=&#34;https://cgit.freedesktop.org/mesa/mesa/commit/?id=ae828a33a74c5b3fc6abee481eac7cb57bf815d0&#34;&gt;code&lt;/a&gt; to be more consistent and to have a more modern feeling, and made it possible to drop some &lt;a href=&#34;https://cgit.freedesktop.org/mesa/mesa/commit/?id=e13bdbbd5bfc1cef00cf504b0567238ae8f45524&#34;&gt;hand-rolled&lt;/a&gt; conversion helpers by switching to already existing solutions (&lt;code&gt;U_FIXED(..)&lt;/code&gt;, &lt;code&gt;S_FIXED(..)&lt;/code&gt;, &lt;code&gt;float_to_ubyte(..)&lt;/code&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mainline kernel boot with STM32MP157C-DK2 Discovery Board</title>
      <link>https://christian-gmeiner.info/2019-12-19-stm32/</link>
      <pubDate>Thu, 19 Dec 2019 21:05:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2019-12-19-stm32/</guid>
      <description>&lt;p&gt;I recently bought a new device for my etnaviv board farm - &lt;a href=&#34;https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html&#34;&gt;STM32MP157C-DK2 Discovery Board&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The big problem is that the stock boot-chain can not boot a mainline kernel - it simply hangs.&lt;/p&gt;
&lt;h3 id=&#34;tf-a&#34;&gt;TF-A&lt;/h3&gt;
&lt;p&gt;Trusted Firmware-A (TF-A) is a reference implementation of secure-world software used on this platform. It implements a secure monitor with various interface standards:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The power state coordination interface (PSCI)&lt;/li&gt;
&lt;li&gt;Trusted board boot requirements (TBBR)&lt;/li&gt;
&lt;li&gt;SMC calling convention&lt;/li&gt;
&lt;li&gt;System control and management interface&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More information can be found at the official website at &lt;a href=&#34;https://www.trustedfirmware.org/&#34;&gt;https://www.trustedfirmware.org/&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare DDNS and Unifi USG</title>
      <link>https://christian-gmeiner.info/2019-07-13-cloudflare-ddns-usg/</link>
      <pubDate>Sat, 13 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2019-07-13-cloudflare-ddns-usg/</guid>
      <description>&lt;p&gt;This is a quick post for those of you looking for a completely free dynamic DNS solution for your home network running on Unifi.&lt;/p&gt;
&lt;p&gt;For years, I was a happy &lt;a href=&#34;https://dyn.com/dns&#34;&gt;DynDns&lt;/a&gt; user and even paid once for a premium plan. But now it is time for a change as I recently switched to &lt;a href=&#34;https://www.ui.com/&#34;&gt;Unfi&lt;/a&gt; network equipment including a &lt;a href=&#34;https://www.ui.com/unifi-routing/usg/&#34;&gt;USG&lt;/a&gt;. Currently, I am using &lt;a href=&#34;https://cloudflare.com&#34;&gt;Cloudflare&lt;/a&gt; for CDN, DDOS protection, free SSL certificates and DNS with a free account. Thankfully, Cloudflare has a free API that allows you to automatically update your DNS records.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mesamatrix</title>
      <link>https://christian-gmeiner.info/2019-06-16-mesamatrix/</link>
      <pubDate>Sun, 16 Jun 2019 15:40:01 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2019-06-16-mesamatrix/</guid>
      <description>&lt;p&gt;You might be familiar with &lt;a href=&#34;https://mesamatrix.net/&#34;&gt;mesamatrix&lt;/a&gt; - a nice site to track the state of all GPU drivers provided by Mesa. Ohh.. did I say all? Let&amp;rsquo;s have a closer look:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This page is a graphical representation of the text file docs/features.txt from the Mesa repository.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So wouldn&amp;rsquo;t it be sick to get etnaviv mentioned in docs/features.txt and onto the matrix?&lt;/p&gt;
&lt;p&gt;First mesamatrix needs to know/support etnaviv. This seems to be quite simple as there is already a pull request to add a bunch of embedded GPU drivers: &lt;a href=&#34;https://github.com/MightyCreak/mesamatrix/pull/136&#34;&gt;Add VC4,VC5 and Vivante GPUs&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://christian-gmeiner.info/about/</link>
      <pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/about/</guid>
      <description>Hugo, the world&amp;#39;s fastest framework for building websites</description>
    </item>
    <item>
      <title>device-tree introspection</title>
      <link>https://christian-gmeiner.info/2017-09-20-device-tree-introspection/</link>
      <pubDate>Wed, 20 Sep 2017 19:13:01 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2017-09-20-device-tree-introspection/</guid>
      <description>&lt;p&gt;From time to time I need to inspect a used device-tree of a running device. For instance, the used bootloader (u-boot, barebox, &amp;hellip;) patches the the initial specified dtb and I want to see the modified one. All that is needed is an installed device-tree-compiler on the target.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dtc -I fs -O dts /sys/firmware/devicetree/base
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>etnaviv officially landed</title>
      <link>https://christian-gmeiner.info/2017-01-12-etnaviv-officially-landed-in-mesa/</link>
      <pubDate>Thu, 12 Jan 2017 19:48:36 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2017-01-12-etnaviv-officially-landed-in-mesa/</guid>
      <description>&lt;p&gt;After years of hard work the etnaviv team reached an other very important milestone. The gallium driver and the renderonly library got pushed into mesa&amp;rsquo;s git repository and will be released with mesa 17.0 - yeah!&lt;/p&gt;
&lt;p&gt;This does not mean we are done with development at all. There are many interesting topics to work on and some of them like better support for newer IP cores or a reworked GLSL compiler should see the light of day during the next months.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let’s Encrypt</title>
      <link>https://christian-gmeiner.info/2016-01-30-lets-encrypt/</link>
      <pubDate>Sat, 30 Jan 2016 21:58:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2016-01-30-lets-encrypt/</guid>
      <description>&lt;p&gt;As HTTPS is a must nowadays I decided a year a go to give it a try and got a certificate from &lt;a href=&#34;https://www.startssl.com/&#34;&gt;startssl&lt;/a&gt;. The process at startssl took quite some time and was not that easy. With &lt;a href=&#34;https://letsencrypt.org&#34;&gt;lets encrypt&lt;/a&gt; everything should be much easier and faster to setup – lets give it a try @&lt;a href=&#34;https://uberspace.de/&#34;&gt;ueberspace&lt;/a&gt; (my hoster).&lt;/p&gt;
&lt;p&gt;There is a very good (German) &lt;a href=&#34;https://funkenstrahlen.de/blog/2015/12/19/lets-encrypt-auf-uberspace/&#34;&gt;tutorial directly from ueberspace&lt;/a&gt; for the whole process. Two minutes later everything was done and it worked! There is only one missing part. As the generated certificate is only valid for 90 days I created a little script which gets run every month – thanks to cron.&lt;/p&gt;</description>
    </item>
    <item>
      <title>etnaviv: kmscube</title>
      <link>https://christian-gmeiner.info/2015-09-25-etnaviv-kmscube/</link>
      <pubDate>Fri, 25 Sep 2015 21:39:10 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2015-09-25-etnaviv-kmscube/</guid>
      <description>&lt;p&gt;Last Friday I got kmscube successfully running with mesa and the new etnaviv DRM kernel driver. At this time I got it not really pixel perfect and I spend some nights to get it fixed. It turns out that I need a small mesa hack to get the rendering correct.&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;&#34; frameborder=&#34;0&#34; height=&#34;473&#34; src=&#34;https://www.youtube.com/embed/vjIBow3M-C4?feature=oembed&#34; width=&#34;840&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;You may ask why did it so long to get it working? Let me explain it to you.&lt;/p&gt;
&lt;p&gt;The Vivnate GPU is a so called render-only GPU which does not have any kind of scanout logic in it. It can only render to physical memory and this only in a tiled memory layout. So we need to use the resolve engine found on the GPU to de-tile the rendered image and blit it to the dumb buffer. Currently mesa has  no software support for this kind of hardware, but I think that could change soon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>QMetaEnum: Serializing C&#43;&#43; Enums</title>
      <link>https://christian-gmeiner.info/2015-05-25-qmetaenum-serializing-c-enums/</link>
      <pubDate>Mon, 25 May 2015 19:42:28 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2015-05-25-qmetaenum-serializing-c-enums/</guid>
      <description>&lt;p&gt;I think that almost every C++ programmer looked into a nice and easy way to do C++ Enum serialization. You may want to store the Enum value in a human readable format (json, ini, ..) and later you may also want to read back the value into the object.&lt;/p&gt;
&lt;p&gt;You have here two way how to archive your goal. Use simple int values to represent the Enum value or use Strings. The big advantage with strings it that you do not have to lookup what the meaning of value 4 is, but you can name the value with a String.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure git send-email for gmail</title>
      <link>https://christian-gmeiner.info/2015-04-06-configure-git-send-email-for-gmail/</link>
      <pubDate>Mon, 06 Apr 2015 20:53:34 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2015-04-06-configure-git-send-email-for-gmail/</guid>
      <description>&lt;p&gt;Today I did a fresh installation of Fedora on my Chromebook and need to setup git send-email. Usually I need to do this step once every 1-2 years I thought it might be a good idea to write it down.&lt;/p&gt;
&lt;p&gt;Edit ~/.gitconfig&lt;/p&gt;
&lt;p&gt;[sendemail] from = Firstname Lastname &lt;a href=&#34;mailto:email@gmail.com&#34;&gt;email@gmail.com&lt;/a&gt; smtpserver = smtp.gmail.com smtpuser = &lt;a href=&#34;mailto:email@gmail.com&#34;&gt;email@gmail.com&lt;/a&gt; smtpencryption = tls smtppass = PASSWORD chainreplyto = false smtpserverport = 587&lt;/p&gt;
&lt;p&gt;As I am using Googles two factor authentication I needed to generate an app specific password.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fast forward to 2015</title>
      <link>https://christian-gmeiner.info/2015-03-08-fast-forward-to-2015/</link>
      <pubDate>Sun, 08 Mar 2015 18:16:20 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2015-03-08-fast-forward-to-2015/</guid>
      <description>&lt;p&gt;It has been a long time since I did the last post and I want to bring you up to date regarding my personal blog. As you might have seen I have changed the used theme to better support mobile devices.&lt;/p&gt;
&lt;p&gt;If your browser supports &lt;a href=&#34;http://en.wikipedia.org/wiki/Server_Name_Indication&#34;&gt;NSI&lt;/a&gt; you should access my blog via https now. It took me some time to setup everything but my new hoster &lt;a href=&#34;http://www.uberspace.de&#34;&gt;ueberspace&lt;/a&gt; made it a breeze to setup everything – thanks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vivante meets devicetree</title>
      <link>https://christian-gmeiner.info/2014-05-24-vivante-meets-devicetree/</link>
      <pubDate>Sat, 24 May 2014 23:41:14 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-05-24-vivante-meets-devicetree/</guid>
      <description>&lt;p&gt;It took me some time to rework the device tree bindings but it looks like it starts to work!&lt;/p&gt;
&lt;div class=&#34;oembed-gist&#34;&gt;&lt;script src=&#34;https://gist.github.com/austriancoder/6196fa33011a120a01dd54dbd077a60d.js&#34;&gt;&lt;/script&gt;&lt;noscript&gt;View the code on [Gist](https://gist.github.com/austriancoder/6196fa33011a120a01dd54dbd077a60d).&lt;/noscript&gt;&lt;/div&gt;Gets loaded into :
&lt;p&gt;[ 3.358155] vivante: module is from the staging directory, the quality is unknown, you have been warned.
[ 3.373087] imx-sgtl5000 sound.15: sgtl5000 2028000.ssi mapping ok
[ 3.379150] [drm] add child gpu2d
[ 3.379154] [drm] add child gpu3d
[ 3.380395] vivante-gpu 134000.gpu2d: pre gpu[idx]: 0x00000000
[ 3.380401] vivante-gpu 134000.gpu2d: adding core @idx 1
[ 3.380408] vivante-gpu 134000.gpu2d: post gpu[idx]: 0xecb56c10
[ 3.380460] vivante gpu-subsystem.11: bound 134000.gpu2d (ops gpu_ops [vivante])
[ 3.380467] vivante-gpu 130000.gpu3d: pre gpu[idx]: 0x00000000
[ 3.380473] vivante-gpu 130000.gpu3d: adding core @idx 0
[ 3.380479] vivante-gpu 130000.gpu3d: post gpu[idx]: 0xecb57210
[ 3.380502] vivante gpu-subsystem.11: bound 130000.gpu3d (ops gpu_ops [vivante])
[ 3.380533] IO:R f0200018 14010000
[ 3.380537] IO:R f0200020 00002000
[ 3.380540] IO:R f0200024 00005108
[ 3.380546] vivante gpu-subsystem.11: model: 2000
[ 3.380551] vivante gpu-subsystem.11: revision: 5108
[ 3.380554] IO:R f020001c e0296cad
[ 3.380558] IO:R f0200034 c9799eff
[ 3.380561] IO:R f0200074 2efbf2d9
[ 3.380564] IO:R f0200084 00000000
[ 3.380567] IO:R f0200088 00000000
[ 3.380572] vivante gpu-subsystem.11: minor_features: c9799eff
[ 3.380578] vivante gpu-subsystem.11: minor_features1: 2efbf2d9
[ 3.380583] vivante gpu-subsystem.11: minor_features2: 0
[ 3.380588] vivante gpu-subsystem.11: minor_features3: 0
[ 3.380592] IO:R f0200000 00070100
[ 3.408629] IO:R f0200004 7fffffff
[ 3.408632] IO:R f0200000 00070100
[ 3.412940] vivante gpu-subsystem.11: 130000.gpu3d: using IOMMU
[ 3.413080] IO:R f01f8018 14010000
[ 3.413083] IO:R f01f8020 00000320
[ 3.413087] IO:R f01f8024 00005007
[ 3.413093] vivante gpu-subsystem.11: model: 320
[ 3.413098] vivante gpu-subsystem.11: revision: 5007
[ 3.413101] IO:R f01f801c e02c7eca
[ 3.413105] IO:R f01f8034 c1399eff
[ 3.413108] IO:R f01f8074 020fb2db
[ 3.413111] IO:R f01f8084 00000000
[ 3.413114] IO:R f01f8088 00000000
[ 3.413120] vivante gpu-subsystem.11: minor_features: c1399eff
[ 3.413126] vivante gpu-subsystem.11: minor_features1: 20fb2db
[ 3.413131] vivante gpu-subsystem.11: minor_features2: 0
[ 3.413136] vivante gpu-subsystem.11: minor_features3: 0
[ 3.413139] IO:R f01f8000 00070100
[ 3.438615] IO:R f01f8004 7fffffff
[ 3.438619] IO:R f01f8000 00070100
[ 3.442583] vivante gpu-subsystem.11: 134000.gpu2d: using IOMMU
[ 3.442681] [drm] Initialized vivante 1.0.0 20130625 on minor 1&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenOCD and the iMX6</title>
      <link>https://christian-gmeiner.info/2014-05-17-openocd-and-the-imx6/</link>
      <pubDate>Sat, 17 May 2014 17:24:35 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-05-17-openocd-and-the-imx6/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://christian-gmeiner.info/wp-content/uploads/2014/05/olimex.jpg&#34;&gt;&lt;img alt=&#34;olimex&#34; loading=&#34;lazy&#34; src=&#34;https://christian-gmeiner.info/wp-content/uploads/2014/05/olimex-768x1024.jpg&#34;&gt;&lt;/a&gt;
Sometimes is is quite handy to have access to a JTAG interface to look more deeply into problems.  The weapon of choice is an &lt;a href=&#34;https://www.olimex.com/Products/ARM/JTAG/ARM-USB-OCD-H/&#34;&gt;Olimex ARM-USB-OCD-H JTAG&lt;/a&gt; in combination with &lt;a href=&#34;http://openocd.sourceforge.net/&#34; title=&#34;OpenOCD&#34;&gt;OpenOCD&lt;/a&gt; 0.8.0.
First we will need to install OpenOCD.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;apt-get install libftdi-dev&lt;/li&gt;
&lt;li&gt;Download and extract OpenOCD 0.8.0&lt;/li&gt;
&lt;li&gt;run ./configure&lt;/li&gt;
&lt;li&gt;run make &amp;amp;&amp;amp; make install&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This should give you an OpenOCD installation with the following configuration:&lt;/p&gt;
&lt;p&gt;OpenOCD configuration summary &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash; MPSSE mode of FTDI based devices yes (auto) ST-Link JTAG Programmer yes (auto) TI ICDI JTAG Programmer yes (auto) Keil ULINK JTAG Programmer yes (auto) Altera USB-Blaster II Compatible yes (auto) Segger J-Link JTAG Programmer yes (auto) OSBDM (JTAG only) Programmer yes (auto) eStick/opendous JTAG Programmer yes (auto) Andes JTAG Programmer yes (auto) Versaloon-Link JTAG Programmer yes (auto) USBProg JTAG Programmer yes (auto) Raisonance RLink JTAG Programmer yes (auto) Olimex ARM-JTAG-EW Programmer yes (auto) CMSIS-DAP Compliant Debugger no&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vivante MMU v1</title>
      <link>https://christian-gmeiner.info/2014-05-03-vivante-mmu-v1/</link>
      <pubDate>Sat, 03 May 2014 20:25:35 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-05-03-vivante-mmu-v1/</guid>
      <description>&lt;p&gt;I did spend quite some time the last days to figure out how the MMU v1 could work and what all the code in the v4 Kernel sources does. It took quite some time and a little hint from Russel to finally understand it. So lets start with the technical details.&lt;/p&gt;
&lt;p&gt;The MMU uses a page table with a maximum size of 256KB. Where each Page Table Entry (PTE) is 4 byte long. The used page size is 4K and can not be changed via some registers etc.
Lets have a look at the bit layout of a PTE.&lt;/p&gt;</description>
    </item>
    <item>
      <title>QtCreator: ptrace operation not permitted</title>
      <link>https://christian-gmeiner.info/2014-03-17-qtcreator-ptrace-operation-not-permitted/</link>
      <pubDate>Mon, 17 Mar 2014 12:57:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-03-17-qtcreator-ptrace-operation-not-permitted/</guid>
      <description>&lt;p&gt;Today I wanted to debug a Qt based application within QtCreator but failed. After a quick google I found the solution:&lt;/p&gt;
&lt;div class=&#34;oembed-gist&#34;&gt;&lt;script src=&#34;https://gist.github.com/austriancoder/c2733a5ca5cfa9c23fe99c27811813d3.js&#34;&gt;&lt;/script&gt;&lt;noscript&gt;View the code on [Gist](https://gist.github.com/austriancoder/c2733a5ca5cfa9c23fe99c27811813d3).&lt;/noscript&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>The next steps for etnaviv</title>
      <link>https://christian-gmeiner.info/2014-02-22-the-next-steps-for-etnaviv/</link>
      <pubDate>Sat, 22 Feb 2014 17:54:17 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-02-22-the-next-steps-for-etnaviv/</guid>
      <description>&lt;p&gt;I did spend some time to find the cause for the rendering issues during running some egls2 demos. The fix is a simple one-liner and I would say that GC8xx and GC2000 are ‘equal’ now. That means general work on etnaviv can start now. Currently I am looking in different problem zones and where to start.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Update mesa fork&lt;/li&gt;
&lt;li&gt;Start working on an improved compiler&lt;/li&gt;
&lt;li&gt;Start working on an kernel interface&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think that Rob will start soon on the kernel interface and the mesa update should be doable during some hours. So I think the next big and important step is to improve the compiler. What should I say… I have basic compiler understanding, did wrote a compiler and VM during my study… thats it. I have never written a single line of glsl and I do not completely understand the Vivante GPU. So a perfect starting point for doing some hacking 🙂 The success rate will be quite low and I hope to not lose my motivation too soon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitHub: How to download a change as patch</title>
      <link>https://christian-gmeiner.info/2014-02-20-github-how-to-download-a-change-as-patch/</link>
      <pubDate>Thu, 20 Feb 2014 08:15:19 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-02-20-github-how-to-download-a-change-as-patch/</guid>
      <description>&lt;p&gt;Sometimes I can be useful to download a changes contained in a Github pull request as a unified diff. It turns out to be very easy.  To view a commit as a diff/patch file, just add &lt;code&gt;.diff&lt;/code&gt; or &lt;code&gt;.patch&lt;/code&gt; to the end of the URL&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/austriancoder/etna_viv/commit/568d290514b6e61428bb73281ac596b0404c8f70.patch&#34;&gt;For instance&lt;/a&gt; &lt;a href=&#34;https://github.com/austriancoder/etna_viv/commit/568d290514b6e61428bb73281ac596b0404c8f70.patch&#34;&gt;
&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mesa meets GC2000</title>
      <link>https://christian-gmeiner.info/2014-02-15-mesa-meets-gc2000/</link>
      <pubDate>Sat, 15 Feb 2014 20:18:25 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-02-15-mesa-meets-gc2000/</guid>
      <description>&lt;p&gt;Here is the first result of running &lt;a href=&#34;https://github.com/laanwj/mesatest_gles&#34;&gt;mesatest_gles &lt;/a&gt;on &lt;a href=&#34;https://github.com/austriancoder/mesa&#34;&gt;mesa&amp;amp;etna&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Following tests are showing good visual results compared to swrast:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hello_Triangle/CH02_HelloTriangle&lt;/li&gt;
&lt;li&gt;Simple_VertexShader/CH08_SimpleVertexShader&lt;/li&gt;
&lt;li&gt;CubeVBO/cube_vbo&lt;/li&gt;
&lt;li&gt;ParticleSystem/CH13_ParticleSystem&lt;/li&gt;
&lt;li&gt;Viewports/viewports&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All other are visual corrupted or segfault. So there is still some work done to get all demos
up and running.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GC2000 support for etnaviv</title>
      <link>https://christian-gmeiner.info/2014-02-09-gc2000-support-for-etnaviv/</link>
      <pubDate>Sun, 09 Feb 2014 17:22:56 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-02-09-gc2000-support-for-etnaviv/</guid>
      <description>&lt;p&gt;Today I hit an important milestone for etnaviv – an open source user-space driver for the Vivante GCxxx series of embedded GPUs.
I finally got GC2000 support to a level that it seems to work. It took me some months to get there.
At the beginning it sounds easy to rebuild a ‘driver’ if you get readable command buffer dumps. I did start with working on a simple replay program to render a cube in the same was as the binary blob does it.
But what should I say… it is quite boring to do everything by hand and not taking advantage of libetnaviv
and the ‘driver’ at all. So I decided to go the hard way and try to fix/add all missing bits until it renders something.
The good thing is that I have now some knowledge about the structure of libetnaviv, the
dirver and mesa in general. It helps a lot if you know why stuff is done that way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rebase Github fork</title>
      <link>https://christian-gmeiner.info/2014-02-08-rebase-github-fork/</link>
      <pubDate>Sat, 08 Feb 2014 09:37:49 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-02-08-rebase-github-fork/</guid>
      <description>&lt;p&gt;Today I needed to rebase my etnaviv fork to the current master of upstream. I need to say that
I never did this before but with git this is a breeze.&lt;/p&gt;
&lt;div class=&#34;oembed-gist&#34;&gt;&lt;script src=&#34;https://gist.github.com/austriancoder/724a0a8d1db4f229e197d501f8b49fa5.js&#34;&gt;&lt;/script&gt;&lt;noscript&gt;View the code on [Gist](https://gist.github.com/austriancoder/724a0a8d1db4f229e197d501f8b49fa5).&lt;/noscript&gt;&lt;/div&gt;If you get a merge conflict during rebase, you only need to follow the instructions git gives you.</description>
    </item>
    <item>
      <title>CMake: Post install scripts for debian</title>
      <link>https://christian-gmeiner.info/2014-01-23-cmake-post-install-scripts-for-debian/</link>
      <pubDate>Thu, 23 Jan 2014 07:49:09 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2014-01-23-cmake-post-install-scripts-for-debian/</guid>
      <description>&lt;p&gt;I am using cmake during my job to create Debian installation packages for different kind of software projects. Today I run into an issue. I needed to run some post installation steps. I know that this is quite easy possible within a deb file, but how to archive the same with cmake?&lt;/p&gt;
&lt;p&gt;It turned out to be quite easy:&lt;/p&gt;
&lt;div class=&#34;oembed-gist&#34;&gt;&lt;script src=&#34;https://gist.github.com/austriancoder/1c3ba1d383fefbf8dd7fe773cebd882d.js&#34;&gt;&lt;/script&gt;&lt;noscript&gt;View the code on [Gist](https://gist.github.com/austriancoder/1c3ba1d383fefbf8dd7fe773cebd882d).&lt;/noscript&gt;&lt;/div&gt;Where postinst is the script which gets executed after the deb got installed.</description>
    </item>
    <item>
      <title>Decrypt shell commands</title>
      <link>https://christian-gmeiner.info/2013-09-05-decrypt-shell-commands/</link>
      <pubDate>Thu, 05 Sep 2013 06:27:03 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-09-05-decrypt-shell-commands/</guid>
      <description>&lt;p&gt;You may know this situation: You have seen a shell command, looked in the man page but you are no really sure what it does?&lt;/p&gt;
&lt;p&gt;It solution to this problem is quite easy: &lt;a href=&#34;http://explainshell.com/&#34; title=&#34;http://explainshell.com/&#34;&gt;http://explainshell.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://christian-gmeiner.info/wp-content/uploads/2013/09/explainshell1.png&#34;&gt;&lt;img alt=&#34;explainshell&#34; loading=&#34;lazy&#34; src=&#34;https://christian-gmeiner.info/wp-content/uploads/2013/09/explainshell1-1024x721.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The best thing is that the source code is released under GPL and can be found at &lt;a href=&#34;https://github.com/idank/explainshell&#34;&gt;GitHub&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recreate ssh host keys in Debian</title>
      <link>https://christian-gmeiner.info/2013-08-22-recreate-ssh-host-keys-in-debian/</link>
      <pubDate>Thu, 22 Aug 2013 07:13:45 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-08-22-recreate-ssh-host-keys-in-debian/</guid>
      <description>&lt;p&gt;Sometimes it is needed to recreate the used ssh host keys and this can be done quite easy on a Debian based system.&lt;/p&gt;
&lt;div class=&#34;oembed-gist&#34;&gt;&lt;script src=&#34;https://gist.github.com/austriancoder/65c4f0141bdea7f565c1aed21404fd19.js&#34;&gt;&lt;/script&gt;&lt;noscript&gt;View the code on [Gist](https://gist.github.com/austriancoder/65c4f0141bdea7f565c1aed21404fd19).&lt;/noscript&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Update KDE in Ubuntu</title>
      <link>https://christian-gmeiner.info/2013-08-21-update-kde-in-ubuntu/</link>
      <pubDate>Wed, 21 Aug 2013 07:27:45 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-08-21-update-kde-in-ubuntu/</guid>
      <description>&lt;p&gt;On my work linux machine I am using Ubuntu with KDE. As the new 4.11 was released I thought it would be a good idea to update my current KDE installation. As a long-term Gentoo user it needed some more steps.&lt;/p&gt;
&lt;p&gt;sudo add-apt-repository ppa:kubuntu-ppa/backports sudo apt-get update sudo apt-get dist-upgrade&lt;/p&gt;
&lt;p&gt;I think it is really time to replace my Ubuntu installation with something different/better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>i.MX6 - DDR3 setup</title>
      <link>https://christian-gmeiner.info/2013-07-26-i-mx6-ddr3-setup/</link>
      <pubDate>Fri, 26 Jul 2013 15:15:04 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-07-26-i-mx6-ddr3-setup/</guid>
      <description>&lt;p&gt;The company I work for has designed a custom i.MX6 based board and I am the guy who
does the board bring-up. For me the i.MX6 platform is a very good choice as support
for the hardware in u-boot and the linux kernel is quite good. So it should not be
too hard to get linux running on our custom board.&lt;/p&gt;
&lt;p&gt;But wait… as I learned from my coreboot activities – memory setup is the hardest
and most importest part. The custom board has 1GB of DDR3 on it and I started to look
how u-boot does the DDR setup. And there I read the term DCD – Device Configuration Data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rebuild a Debian package from source</title>
      <link>https://christian-gmeiner.info/2013-06-12-rebuild-a-debian-package-from-source/</link>
      <pubDate>Wed, 12 Jun 2013 10:49:25 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-06-12-rebuild-a-debian-package-from-source/</guid>
      <description>&lt;p&gt;In some rare cases I need to debug some networking protocols and my target of interest
is NTP. I am debugging an issue where (maybe) NTP sets the current time backwards about
two hours. My first candidate to look deeper is ntpd.&lt;/p&gt;
&lt;p&gt;But what do I see… debugging option is disabled in the Debian squeeze package of ntp.
WTF?! – the only nice way to do useful debugging without wireshark. The good thing is
that Ubuntu had the same miss-configuration and got it &lt;a href=&#34;https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/47683&#34;&gt;fixed&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building etna_viv on the sabre lite</title>
      <link>https://christian-gmeiner.info/2013-04-29-building-etna_viv-on-the-sabre-lite/</link>
      <pubDate>Mon, 29 Apr 2013 19:03:10 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-04-29-building-etna_viv-on-the-sabre-lite/</guid>
      <description>&lt;p&gt;At the moment I am playing around with a cute nice little imx6q board – &lt;a href=&#34;http://boundarydevices.com/products/sabre-lite-imx6-sbc/&#34;&gt;the sabre lite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am running a freescale based RFS with the binary libGAL.so blob in the user space. So why
not look into etna_viv and get it compiled. It turns out to be as simple as this.&lt;/p&gt;
&lt;p&gt;git clone git://github.com/laanwj/etna_viv.git cd etna_viv/native export GCABI=imx6 export CFLAGS=&amp;quot;-D_POSIX_C_SOURCE=200809 -D_GNU_SOURCE -DLINUX -pthread&amp;quot; export CXXFLAGS=&amp;quot;-D_POSIX_C_SOURCE=200809 -D_GNU_SOURCE -DLINUX -pthread&amp;quot; make&lt;/p&gt;</description>
    </item>
    <item>
      <title>JQuery: autoscroll to last line of a div</title>
      <link>https://christian-gmeiner.info/2013-03-16-jquery-autoscroll-to-last-line-of-a-div/</link>
      <pubDate>Sat, 16 Mar 2013 17:18:58 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-03-16-jquery-autoscroll-to-last-line-of-a-div/</guid>
      <description>&lt;p&gt;Image you are working on a small web application where you use a JQuery UI dialog
to inform the user about the current process.&lt;/p&gt;
 &lt;ul id=&#34;progress&#34; style=&#34;width: 300px; height: 200px; overflow: auto&#34;&gt; &lt;/ul&gt;
&lt;p&gt;Triggered via SSE I am appending some messages via JavaScript.&lt;/p&gt;
&lt;p&gt;$(&amp;rsquo;#progress&amp;rsquo;).append(&amp;quot;&amp;lt;span class=&amp;lsquo;ui-icon ui-icon-alert&amp;rsquo; style=&amp;lsquo;float: left; margin-right: .3em&amp;rsquo;;&amp;gt;&lt;/span&gt;&amp;quot; + stderr + &amp;ldquo;&lt;br&gt;&amp;rdquo;);&lt;/p&gt;
&lt;p&gt;In order to automaticly scroll to the last line I am using this two magic lines of JavaScript:&lt;/p&gt;
&lt;p&gt;var height = $(&amp;rsquo;#progress&amp;rsquo;)[0].scrollHeight; $(&amp;rsquo;#progress&amp;rsquo;).scrollTop(height);&lt;/p&gt;</description>
    </item>
    <item>
      <title>git: RPC failed; result=22, HTTP code = 504</title>
      <link>https://christian-gmeiner.info/2013-03-07-git-rpc-failed/</link>
      <pubDate>Thu, 07 Mar 2013 15:44:38 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-03-07-git-rpc-failed/</guid>
      <description>&lt;p&gt;git clone &lt;a href=&#34;http://review.coreboot.org/p/coreboot.git&#34;&gt;http://review.coreboot.org/p/coreboot.git&lt;/a&gt; coreboot Cloning into &amp;lsquo;coreboot&amp;rsquo;&amp;hellip; error: RPC failed; result=22, HTTP code = 504 fatal: The remote end hung up unexpectedly&lt;/p&gt;
&lt;p&gt;The error occurs in ‘libcurl’, which is the underlying protocol for http. To get more details about the error, set GIT_CURL_VERBOSE=1&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMBus Compatibility With an I²C Device</title>
      <link>https://christian-gmeiner.info/2013-02-23-smbus-compatibility-with-an-i-c2-b2c-device/</link>
      <pubDate>Sat, 23 Feb 2013 10:54:30 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-23-smbus-compatibility-with-an-i-c2-b2c-device/</guid>
      <description>&lt;p&gt;Some naive guys – like me – think that SMBus and I²C are equal expect the bus level. But in the last days I run into a problem where an at24 based EEPROM connected via SMBus triggers a bus collision after a warm reboot. After some hours of debugging – even staring minutes at a oscilloscope showing SDD and SDC lines – I started to add some dump_stack() calls into i2c_core.c file form a recent linux kernel. And I found the bad bus transaction – i2c_probe_func_quick_read(..).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending patches from a local git repository</title>
      <link>https://christian-gmeiner.info/2013-02-15-sending-patches-from-a-local-git-repository/</link>
      <pubDate>Fri, 15 Feb 2013 15:40:49 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-15-sending-patches-from-a-local-git-repository/</guid>
      <description>&lt;p&gt;At the moment I am reworking some old seabios patches as I want them in upstream. At the moment my git log shows this:&lt;/p&gt;
&lt;p&gt;commit fd7e6128d5fb9b8297a4a20f3288c130a554147b Author: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; Date: Thu Feb 14 10:24:59 2013 +0100 geodevga: fix wrong define name Signed-off-by: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; commit b1268e8100f0bcf0655b65326856e6f33e3625c1 Author: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; Date: Thu Feb 14 10:22:58 2013 +0100 geodevga: add debug to msr functions Signed-off-by: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; commit dde4df84126a460c454ca79fc8dc5b0ae4aa876e Author: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; Date: Thu Feb 14 10:19:05 2013 +0100 geodevga: move output setup to own function Signed-off-by: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; commit bba85a38c67aa2b52f146b5cefe58b00f516fc2e Author: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; Date: Thu Feb 14 10:13:59 2013 +0100 geodevga: move framebuffer setup Framebuffer setup has nothing to do with dc_setup(..) so move it to geodevga_init(..). Signed-off-by: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; commit 0b3dee01385e65f2b88600c9b663589343ac4abe Author: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; Date: Thu Feb 14 10:05:45 2013 +0100 geodevga: fix errors in geode_fp_* functions Signed-off-by: Christian Gmeiner &lt;a href=&#34;mailto:christian.gmeiner@gmail.com&#34;&gt;christian.gmeiner@gmail.com&lt;/a&gt; commit 4b1d2be6e1c73d1fc9a984ca7fe6c14d433171cc Author: David Woodhouse &lt;a href=&#34;mailto:David.Woodhouse@intel.com&#34;&gt;David.Woodhouse@intel.com&lt;/a&gt; Date: Sun Feb 10 00:51:56 2013 +0000 Unify return path for CSM to go via csm_return() This allows us to keep the entry_csm code simple, and ensures that we consistently do things like saving the PIC mask (and later setting UmbStart) on the way back to UEFI. &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I ♥ Free Software</title>
      <link>https://christian-gmeiner.info/2013-02-14-i-love-free-software/</link>
      <pubDate>Thu, 14 Feb 2013 17:03:02 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-14-i-love-free-software/</guid>
      <description>&lt;p&gt;Today is February 14. Some think of it as flower grocer appreciation day, but most (and for better reasons) celebrate it as the international &lt;a href=&#34;http://fsfe.org/campaigns/ilovefs/2013/ilovefs.en.html&#34;&gt;I ♥ Free Software day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://christian-gmeiner.info/wp-content/uploads/2013/02/valentine-2010.png&#34;&gt;&lt;img alt=&#34;valentine-2010&#34; loading=&#34;lazy&#34; src=&#34;https://christian-gmeiner.info/wp-content/uploads/2013/02/valentine-2010.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Free and open source software makes it possible to fix problems and/or implement new features in software I use. I could write a lot of text why I think it is a good idea to support the open source community but I want you to form an opinion about this topic buy simply using open source software and support it. It does not mean you need to send in some patches… it starts with simple things like bug reports or user support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Which colors can work together?</title>
      <link>https://christian-gmeiner.info/2013-02-12-which-colors-can-work-together/</link>
      <pubDate>Tue, 12 Feb 2013 13:07:52 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-12-which-colors-can-work-together/</guid>
      <description>&lt;p&gt;In some rare cases I need to find the correct colors that can ‘work’ together. As I do not call me the graphical/designer guy I always use little helpers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://colorschemedesigner.com/&#34;&gt;http://colorschemedesigner.com&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The choice of jQuery selector&#39;s</title>
      <link>https://christian-gmeiner.info/2013-02-05-the-choice-of-jquery-selectors/</link>
      <pubDate>Tue, 05 Feb 2013 14:18:19 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-05-the-choice-of-jquery-selectors/</guid>
      <description>&lt;p&gt;Sometimes if you are doing some fancy HTML5 development you wonder what jQuery selector
would do the job. In such a case I can recommend the following little helper 🙂&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://codylindley.com/jqueryselectors/&#34; title=&#34;Selectors&#34;&gt;http://codylindley.com/jqueryselectors/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add vendor specific information&#39;s to a coreboot rom</title>
      <link>https://christian-gmeiner.info/2013-02-05-add-vendor-specific-informations-to-a-coreboot-rom/</link>
      <pubDate>Tue, 05 Feb 2013 12:54:43 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-05-add-vendor-specific-informations-to-a-coreboot-rom/</guid>
      <description>&lt;p&gt;Sometimes it is needed to add some vendor specific information’s like a version string
to a generated coreboot rom. For this example we assume we want the area from 0x00 to 0x30
for such kind of data.&lt;/p&gt;
&lt;p&gt;The first idea is to use cbfstool. Thanks to some guys in the IRC channel it looks like the
current build system does something like:&lt;/p&gt;
&lt;p&gt;cbfstool -o $$(( $(CONFIG_ROM_SIZE) - $(CONFIG_CBFS_SIZE) )) &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Detect initramfs under Debian squeeze</title>
      <link>https://christian-gmeiner.info/2013-02-04-detect-initramfs-under-debian-squeeze/</link>
      <pubDate>Mon, 04 Feb 2013 11:11:19 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-02-04-detect-initramfs-under-debian-squeeze/</guid>
      <description>&lt;p&gt;I am looking for a way to detect If a initramfs was used during boot. And after some reboots
and reading of init script of initramfs-tools I found this solution.&lt;/p&gt;
&lt;p&gt;#!/bin/bash if [ -e /dev/.initramfs ]; then echo YES else echo NO fi&lt;/p&gt;
&lt;p&gt;This may not work under wheezy or any other working distribution. But that’s okay for now 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>systemd on a Gentoo based system</title>
      <link>https://christian-gmeiner.info/2013-01-21-systemd-on-a-gentoo-based-system/</link>
      <pubDate>Mon, 21 Jan 2013 21:03:26 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2013-01-21-systemd-on-a-gentoo-based-system/</guid>
      <description>&lt;p&gt;I always wanted to try out systemd as I like the ideas and concept behind it. So lets get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&#34;line-height: 15px;&#34;&gt;add systemd USE-flag&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;emerge –ask –changed-use –deep @world&lt;/li&gt;
&lt;li&gt;emerge –ask systemd&lt;/li&gt;
&lt;li&gt;change grub config to use init=/usr/bin/systemd&lt;/li&gt;
&lt;li&gt;reboot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;localhost christian # systemd-analyze Traceback (most recent call last): File &amp;ldquo;/usr/bin/systemd-analyze&amp;rdquo;, line 23, in &lt;module&gt; from gi.repository import Gio ImportError: No module named gi.repository&lt;/p&gt;
&lt;p&gt;This can be fixed with:&lt;/p&gt;
&lt;h1 id=&#34;emerge--av-dev-pythonpygobject&#34;&gt;emerge -av dev-python/pygobject&lt;/h1&gt;
&lt;p&gt;Here are the first results:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Couldn&#39;t register serial port 0000:02:0a.2: -28</title>
      <link>https://christian-gmeiner.info/2012-10-31-couldnt-register-serial-port-0000020a-2-28/</link>
      <pubDate>Wed, 31 Oct 2012 09:10:23 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-10-31-couldnt-register-serial-port-0000020a-2-28/</guid>
      <description>&lt;p&gt;I run into a problem where I have a device which has two normal serial ports and some on a PCI device.
After booting the kernel I got this error line:&lt;/p&gt;
&lt;p&gt;Couldn&amp;rsquo;t register serial port 0000:02:0a.2: -28&lt;/p&gt;
&lt;p&gt;In order to get more than 2 serial ports working, I “fixed” my currently used kernel config:&lt;/p&gt;
&lt;p&gt;CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RUNTIME_UARTS=6&lt;/p&gt;</description>
    </item>
    <item>
      <title>Petition to stop software patents in Europe</title>
      <link>https://christian-gmeiner.info/2012-10-22-petition-to-stop-software-patents-in-europe/</link>
      <pubDate>Mon, 22 Oct 2012 10:01:53 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-10-22-petition-to-stop-software-patents-in-europe/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://petition.stopsoftwarepatents.eu/521006897931/&#34;&gt;&lt;img alt=&#34;stopsoftwarepatents.eu oetition banner&#34; loading=&#34;lazy&#34; src=&#34;http://petition.stopsoftwarepatents.eu/banner/521006897931/ssp-732-121.gif&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git via Git</title>
      <link>https://christian-gmeiner.info/2012-10-15-git-via-git/</link>
      <pubDate>Mon, 15 Oct 2012 17:49:40 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-10-15-git-via-git/</guid>
      <description>&lt;p&gt;If you already have Git installed, you can get the latest development version via Git itself:&lt;/p&gt;
&lt;p&gt;git clone &lt;a href=&#34;https://github.com/git/git.git&#34;&gt;https://github.com/git/git.git&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Change mac address under linux - the brutal way</title>
      <link>https://christian-gmeiner.info/2012-10-13-change-mac-address-under-linux-the-brutal-way/</link>
      <pubDate>Sat, 13 Oct 2012 11:42:24 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-10-13-change-mac-address-under-linux-the-brutal-way/</guid>
      <description>&lt;p&gt;Last days I run into a problem that I needed to change the mac address of a network card directly under linux. In the last years VxWorks was used for this purpose – oh and yes I know that you should not change a mac address 🙂 But I am working in a company which produces devices with network ports and they need an initial mac address.&lt;/p&gt;
&lt;p&gt;The first thing you would try is to use ifconfig to change the mac address.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Who is wasting my disk space</title>
      <link>https://christian-gmeiner.info/2012-10-13-who-is-wasting-my-disk-space/</link>
      <pubDate>Sat, 13 Oct 2012 11:25:49 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-10-13-who-is-wasting-my-disk-space/</guid>
      <description>&lt;p&gt;I think all of us run into this problem… the free space on a storage medium is getting smaller and smaller and you are not really sure why this is the case. For such cases I use a graphical tool to see the biggest space waster – as I am QT guy I am using &lt;a href=&#34;http://methylblue.com/filelight/&#34; title=&#34;filelight&#34;&gt;filelight&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://methylblue.com/filelight/images/filelight-1.0.png&#34; title=&#34;filelight&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>em8300: starting from scratch</title>
      <link>https://christian-gmeiner.info/2012-08-07-em8300-starting-from-scratch/</link>
      <pubDate>Tue, 07 Aug 2012 22:09:36 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-08-07-em8300-starting-from-scratch/</guid>
      <description>&lt;p&gt;The last two days I found again some time to hack on the em8300/dxr3 driver. I see the end comming of all my work, but I need to change the way I work. I have renamed the old project on github to v4l2-em8300-old and created a new one. Yes you have heard it correctly – a new one. I think that I have enough knowledge to start from scratch.&lt;/p&gt;
&lt;p&gt;The new repository can be found here: &lt;a href=&#34;https://github.com/austriancoder/v4l2-em8300&#34;&gt;https://github.com/austriancoder/v4l2-em8300&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>interrupt handling in linux device drivers</title>
      <link>https://christian-gmeiner.info/2012-08-07-interrupt-handling-in-linux-device-drivers/</link>
      <pubDate>Tue, 07 Aug 2012 17:04:24 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-08-07-interrupt-handling-in-linux-device-drivers/</guid>
      <description>&lt;p&gt;Every developer should know this – and its a free course… for what are you waiting?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://training.linuxfoundation.org/linux-tutorials/interrupt-handling-in-linux-device-drivers&#34;&gt;Click Me&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>objdump is your friend</title>
      <link>https://christian-gmeiner.info/2012-07-18-objdump-is-your-friend/</link>
      <pubDate>Wed, 18 Jul 2012 13:41:35 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-07-18-objdump-is-your-friend/</guid>
      <description>&lt;p&gt;Lets image you are working on a coreboot port for some mainboard and you are a very glad guy cause you have a jtag interface or something similar and you notice a hang, which could be caused by a never ending loop or some other mysterious stuff – all you know is the current instruction pointer.&lt;/p&gt;
&lt;p&gt;objdump -S ./build/cbfs/fallback/coreboot_ram.elf&lt;/p&gt;
&lt;p&gt;and search for the address of the instruction pointer – may it help you to figure out whats
going on 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compare Two Filesystems Recursively</title>
      <link>https://christian-gmeiner.info/2012-06-19-compare-two-filesystems-recursively/</link>
      <pubDate>Tue, 19 Jun 2012 10:40:06 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-06-19-compare-two-filesystems-recursively/</guid>
      <description>&lt;p&gt;Sometimes it is needed to compare two filesystems, which can be done quite easily:&lt;/p&gt;
&lt;p&gt;diff -rq /mnt/fs1 /mnt/fs2&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Grub in a chroot environment</title>
      <link>https://christian-gmeiner.info/2012-01-31-install-grub-in-a-chroot-environment/</link>
      <pubDate>Tue, 31 Jan 2012 12:53:40 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-01-31-install-grub-in-a-chroot-environment/</guid>
      <description>&lt;p&gt;Image you destroyed your MBR sector of your hard drive/flash device and you are not able to load grub. You can easily fix this issue from an other Linux based computer. Simply run the following commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mount /dev/sda1 /mnt/&lt;/li&gt;
&lt;li&gt;mount -t proc none /mnt/proc&lt;/li&gt;
&lt;li&gt;mount -o bind /dev /mnt/dev&lt;/li&gt;
&lt;li&gt;chroot /mnt/ /bin/bash&lt;/li&gt;
&lt;li&gt;/usr/sbin/grub-install –recheck –no-floppy /dev/sda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this routine it it is also possible to fix UUID problems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switching</title>
      <link>https://christian-gmeiner.info/2012-01-26-switching/</link>
      <pubDate>Thu, 26 Jan 2012 15:32:39 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2012-01-26-switching/</guid>
      <description>&lt;p&gt;Um eine breitere Masse zu erreichen, wird der Blog geswitcht..&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Starting with this second the whole blog will be in English and it will cover a broader range of topics…&lt;/p&gt;
&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Status Update</title>
      <link>https://christian-gmeiner.info/2011-11-07-status-update/</link>
      <pubDate>Mon, 07 Nov 2011 20:55:47 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2011-11-07-status-update/</guid>
      <description>&lt;p&gt;Hallo zusammen.&lt;/p&gt;
&lt;p&gt;Ich habe schon länger nichts mehr von mir hören lassen, doch nun habe ich ein Update
bezüglich em8300 und dem langsamen aber stätigem Prozess zur Aufnahme in den Mainline Kernel.&lt;/p&gt;
&lt;p&gt;Im Linux Kernel 3.3.0 sind kleine Änderungen für die adv7170 und adb7175 Treiber eingeflossen, welche vom em8300 Treiber benötigt werden. Somit wäre es dann möglich direkt mit dem V4L2 Subdevices zu arbeiten. Was gibt es aber sonst noch zu tun, damit der Prozess irgendwann ein Ende findet?&lt;/p&gt;</description>
    </item>
    <item>
      <title>v4l2-em8300 - EEPROM dumps</title>
      <link>https://christian-gmeiner.info/2011-05-21-v4l2-em8300-eeprom-dumps/</link>
      <pubDate>Sat, 21 May 2011 21:26:04 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2011-05-21-v4l2-em8300-eeprom-dumps/</guid>
      <description>&lt;p&gt;[ 4204.966614] Sigma Designs EM8300 0000:00:09.0: PCI INT A -&amp;gt; Link[LNKB] -&amp;gt; GSI 5 (level, low) -&amp;gt; IRQ 5
[ 4204.966637] em8300-0: EM8300 8300 (rev 2)
[ 4204.966642] bus: 0, devfn: 72, irq: 5,
[ 4204.966647] memory: 0xcfe00000.
[ 4204.966998] em8300-0: mapped-memory at 0xf9600000
[ 4204.967163] em8300-0: using MTRR
[ 4205.038676] bus 0: i2c scan: found device @ 0x8a  [bt865]
[ 4205.169007] bus 1: i2c scan: found device @ 0xa0  [eeprom]
[ 4205.215170] i2c i2c-2: client [eeprom] registered with bus id 2-0050
[ 4205.268272] full 256-byte eeprom dump:
[ 4205.268284] 00: 10 22 00 00 00 00 00 01 00 00 00 00 00 00 00 00
[ 4205.268299] 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 4205.268313] 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 4205.268327] 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 4205.268340] 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268355] 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 4205.268368] 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 4205.268381] 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55
[ 4205.268394] 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268408] 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268422] a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268436] b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268450] c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268465] d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268479] e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268493] f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[ 4205.268510] em8300-0: detected card: DXR3 with BT865.
[ 4205.268517] em8300-0: Chip revision: 2
[ 4205.276298] bt865 1-0045: chip found @ 0x8a (em8300 i2c driver #0-0)
[ 4205.276910] i2c i2c-1: client [bt865] registered with bus id 1-0045&lt;/p&gt;</description>
    </item>
    <item>
      <title>v4l2-em8300 - Audio Cleanups</title>
      <link>https://christian-gmeiner.info/2011-05-21-v4l2-em8300-audio-cleanups/</link>
      <pubDate>Sat, 21 May 2011 20:27:15 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2011-05-21-v4l2-em8300-audio-cleanups/</guid>
      <description>&lt;p&gt;Hier wieder ein Lebenszeichen vom v4l2-em8300 Projekt.&lt;/p&gt;
&lt;p&gt;Ich habe die letzten zwei Tage genützt um den Audio Teil des Treibers ein wenig aufzuräumen. Ab jetzt wird nur noch ALSA unterstützt und alle Moduloptionen bezüglich
Audio wurden entfernt. Langsam aber sicher habe ich schon viele Teile aufgeräumt und der
Treiber wird immer besser 🙂&lt;/p&gt;
&lt;p&gt;Über die nächsten Schritte in der Entwicklung bin ich mir noch nicht sicher. vbuf2 wäre sicherlich eine Überlegung wert, da ich möglichst viel Kernel-Funktionalität verwenden möchte – macht den Treiber schön klein und übersichtlich. Ich hoffe ich werde in den nächsten Wochen/Monaten wieder einmal Richtig viel Zeit fürs hacken haben.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bye Bye BKL</title>
      <link>https://christian-gmeiner.info/2011-05-08-bye-bye-bkl/</link>
      <pubDate>Sun, 08 May 2011 13:02:21 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2011-05-08-bye-bye-bkl/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb&#34;&gt;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4ba8216cd90560bc402f52076f64d8546e8aefcb&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog is back....</title>
      <link>https://christian-gmeiner.info/2011-04-21-blog-is-back/</link>
      <pubDate>Thu, 21 Apr 2011 15:38:37 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2011-04-21-blog-is-back/</guid>
      <description>&lt;p&gt;Nun finde ich endlich einmal wieder ein wenig Zeit für diesen Blog… und was soll ich sagen, er ist wieder online 🙂 Möge er mit vielen Inhalten gefüllt werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Default #define&#39;s vom GCC</title>
      <link>https://christian-gmeiner.info/2010-11-25-default-defines-vom-gcc/</link>
      <pubDate>Thu, 25 Nov 2010 12:04:55 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-11-25-default-defines-vom-gcc/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;echo “” | cpp -dD&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dies kann hin und wieder recht nützlich sein.&lt;/p&gt;</description>
    </item>
    <item>
      <title>vdr-plugin-dxr3 updates</title>
      <link>https://christian-gmeiner.info/2010-06-28-vdr-plugin-dxr3-updates/</link>
      <pubDate>Mon, 28 Jun 2010 14:10:13 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-06-28-vdr-plugin-dxr3-updates/</guid>
      <description>&lt;p&gt;In letzter Zeit hat sich wieder ein wenig was beim Plugin getan. Die OSS Ausgabe wurde nun entfernt um sich ganz der Audioausgabe mittles ALSA zu widmen. Leider gibt es in diesem Bereich
noch ein paar kleinere Probleme, doch ich hoffe diese noch in den Griff zu bekommen. Das Wechseln des Kanales geht nun ohne gröbere Probleme (ALSA spinnt hin und wieder noch) und das Plugin kompiliert auch mit ffmpeg 0.6.&lt;/p&gt;</description>
    </item>
    <item>
      <title>alsa</title>
      <link>https://christian-gmeiner.info/2010-06-18-alsa/</link>
      <pubDate>Fri, 18 Jun 2010 22:33:45 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-06-18-alsa/</guid>
      <description>&lt;p&gt;Hin und wieder finde ich ein wenig Zeit um am Plugin zu arbeiten. Audio und Video Sync scheint nun recht gut zu funktioneren (noch nicht commited), doch leider bekomme ich oft noch XRuns in alsa. Da ich den oss Support aus dem Plugin entfernen will, ist es sicherlich keine schlechte Idee, den alsa Ausgabe-Treiber zu fixen.&lt;/p&gt;
&lt;p&gt;Zum Glück gibt es die Möglichkeit die XRuns zu debugen – siehe &lt;a href=&#34;http://www.alsa-project.org/main/index.php/XRUN_Debug&#34;&gt;hier&lt;/a&gt;. Ich werde sicherlich noch ein paar nette Studen mit alsa verbringen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PulseAudio meets vdr-plugin-dxr3</title>
      <link>https://christian-gmeiner.info/2010-03-06-pulseaudio-meets-vdr-plugin-dxr3/</link>
      <pubDate>Sat, 06 Mar 2010 17:18:12 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-03-06-pulseaudio-meets-vdr-plugin-dxr3/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;pa-dxr3&#34; loading=&#34;lazy&#34; src=&#34;http://www.christian-gmeiner.info/wordpress/wp-content/uploads/2010/03/pa-dxr3.png&#34; title=&#34;pa-dxr3&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fork-Bombe</title>
      <link>https://christian-gmeiner.info/2010-03-04-fork-bombe/</link>
      <pubDate>Thu, 04 Mar 2010 16:21:13 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-03-04-fork-bombe/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;$&amp;gt; PATH=.
$&amp;gt; echo ‘a &amp;amp; a’ &amp;gt; a
$&amp;gt; chmod 755 a; /bin/bash a&lt;/p&gt;
&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Buffer und A/V Sync rewrite</title>
      <link>https://christian-gmeiner.info/2010-02-05-buffer-und-av-sync-rewrite/</link>
      <pubDate>Fri, 05 Feb 2010 14:01:25 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-02-05-buffer-und-av-sync-rewrite/</guid>
      <description>&lt;p&gt;Endlich ist es so weit, nach viel Research und vielem Probieren ist der Buffer und A/V Sync rewrite in progress 🙂&lt;/p&gt;
&lt;p&gt;Nun brauche ich sehr viel Feedback bezüglich A/V sync… also alle testen.
&lt;a href=&#34;http://projects.vdr-developer.org/git/?p=vdr-plugin-dxr3.git;a=shortlog;h=refs/heads/buffer-and-sync-rewrite&#34;&gt;http://projects.vdr-developer.org/git/?p=vdr-plugin-dxr3.git;a=shortlog;h=refs/heads/buffer-and-sync-rewrite&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Danke euch allen&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux und HP COLORADO 20GBe(extern)</title>
      <link>https://christian-gmeiner.info/2010-01-19-linux-und-hp-colorado-20gbeextern/</link>
      <pubDate>Tue, 19 Jan 2010 11:31:34 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2010-01-19-linux-und-hp-colorado-20gbeextern/</guid>
      <description>&lt;p&gt;Im Moment bin ich damit konfrontiert, Backups von einem alten exteren Bandlaufwerk wiederherzustellen. Das große Ziel ist es an einen Bruchteil der Daten auf dem Bandlaufwerk Zugang zu bekommen.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.buycoms.com/pic/product/129/14085/TAB6_2.JPG&#34; title=&#34;HP Colorado 20 GB&#34;&gt;Mein Kunde verwendet im Moment einen aktuellen Recher (Quad-Core) mit einem ebenso aktuellen Windows. Blöderweise werden keine Treiber von HP für diese Windows-Version zur Verfügung gestellt und ich musste nach einer Alternative ausschau halten. Und hier glänzt Linux. Ich verwende einen 2.6.32 Kernel und konnte mit diesem erfolgreich das externe Bandlaufwerk (Parallel-Port) erkennen/verwenden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Es weihnachtet sehr...</title>
      <link>https://christian-gmeiner.info/2009-12-21-es-weihnachtet-sehr/</link>
      <pubDate>Mon, 21 Dec 2009 12:28:17 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-12-21-es-weihnachtet-sehr/</guid>
      <description>&lt;p&gt;int &lt;em&gt;,l; char*I, &lt;em&gt;O[]={&amp;quot;&amp;quot;, &amp;ldquo;gjstu&amp;rdquo;,&amp;ldquo;t&amp;rdquo; &amp;ldquo;fdpoe&amp;rdquo;,&amp;ldquo;uij&amp;rdquo; &amp;ldquo;se&amp;rdquo;,&amp;ldquo;gpvsui&amp;rdquo;, &amp;ldquo;gjgui&amp;rdquo;,&amp;ldquo;t&amp;rdquo; &amp;ldquo;jyui&amp;rdquo;,&amp;ldquo;tfwf&amp;rdquo; &amp;ldquo;oui&amp;rdquo;,&amp;ldquo;fjhiui&amp;rdquo;, &amp;ldquo;ojoui&amp;rdquo;,&amp;ldquo;ufoui&amp;rdquo;, &amp;ldquo;fmfwfoui&amp;rdquo;,&amp;ldquo;uxfmgu&amp;rdquo; &amp;ldquo;i&amp;rdquo;,&amp;ldquo;b!qbsusjehf!jo!&amp;rdquo; &amp;ldquo;b!qfbs!usff/xbxb&amp;rdquo;,&amp;quot;&amp;quot; &amp;ldquo;uxp!uvsumf!epwf&amp;rdquo; &amp;ldquo;t-xb&amp;rdquo;,&amp;ldquo;uisff!gsf&amp;rdquo; &amp;ldquo;odi!ifot-!&amp;rdquo;,&amp;ldquo;gpvs!d&amp;rdquo; &amp;ldquo;bmmjoh!cjset-!&amp;rdquo;,&amp;ldquo;gjwf&amp;rdquo; &amp;ldquo;!hpme!sjoht&amp;lt;xb&amp;rdquo;,&amp;ldquo;tjy!h&amp;rdquo; &amp;ldquo;fftf!b.mbzjoh-!&amp;rdquo;,&amp;ldquo;tfwfo!t&amp;rdquo; &amp;ldquo;xbot!b.txjnnjoh-xb&amp;rdquo;,&amp;ldquo;fjhiu&amp;rdquo; &amp;ldquo;!nbjet!b.njmljoh-!&amp;rdquo;,&amp;ldquo;ojof!mbe&amp;rdquo; &amp;ldquo;jft!ebodjoh-!&amp;rdquo;,&amp;ldquo;ufo!m&amp;rdquo; &amp;ldquo;pset!b.mfbqjoh-xb&amp;rdquo;,&amp;ldquo;fm&amp;rdquo; &amp;ldquo;fwfo!qjqfst!qjqjoh-!&amp;rdquo;,&amp;ldquo;ux&amp;rdquo; &amp;ldquo;fmwf!esvnnfst!esvnnjoh-!&amp;rdquo;,&amp;quot;&amp;quot; &amp;ldquo;Po!uif!&amp;rdquo;,&amp;quot;!ebz!pg!Disjtunbt!n&amp;quot; &amp;ldquo;z!usvf!mpwf!hbwf!up!nfxb&amp;rdquo;,&amp;ldquo;boe&amp;rdquo; &amp;ldquo;!&amp;rdquo;};int putchar(int);int main(void ){while(l&amp;lt;(sizeof O/sizeof&lt;/em&gt;O-2)/2-1){ I=O[&lt;/em&gt;=!&lt;em&gt;?sizeof O/sizeof*O- 3:&lt;/em&gt;&amp;lt;(sizeof(O)/sizeof&lt;em&gt;O-2)/2? sizeof O/sizeof&lt;/em&gt;O-2:&lt;em&gt;==(sizeof( O)/sizeof*O-2)/2?++l,0:&lt;/em&gt;&amp;lt;(sizeof( O)/sizeof(&lt;em&gt;O))-3?(_-1)==(sizeof(O)/ sizeof&lt;/em&gt;O-2)/2?sizeof O/sizeof&lt;em&gt;O-1:&lt;em&gt;-1 :&lt;/em&gt;&amp;lt;sizeof(O)/sizeof&lt;/em&gt;O-2?l+1:_&amp;lt;sizeof(O) /sizeof*O-1?l+(sizeof O/sizeof(&lt;em&gt;O)-2)/2:( sizeof(O)/sizeof&lt;/em&gt;O-2)/2];while(*I){putchar( *I++-1);}} return 0;}&lt;/p&gt;</description>
    </item>
    <item>
      <title>VDR 1.7 Statusupdate [Upd]</title>
      <link>https://christian-gmeiner.info/2009-12-05-vdr-1-7-statusupdate/</link>
      <pubDate>Sat, 05 Dec 2009 21:49:17 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-12-05-vdr-1-7-statusupdate/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://projects.vdr-developer.org/git/?p=vdr-plugin-dxr3.git;a=commitdiff;h=41f0211ca48e2c5a5af1fe41f9af644012fe91c4&#34;&gt;41f0211ca48e2c5a5af1fe41f9af644012fe91c4&lt;/a&gt; – das ist der Commit der Audioprobleme mit VDR 1.7
korrigiert. Noch gibt av_log eine Warnung aus:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[mp3 @ 0x9e70a60]incorrect frame size&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Diese kann ignoriert werden… die Ursache ist mir bekannt, doch ich bin mir noch nicht sicher, wie
ich das am schönsten löse 🙂&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Der Bug 169 ist nun mit Commit 961b570ff897b54beabdcb4c54e59049203ce10a gefixt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>audiodecoder und 1.7.10</title>
      <link>https://christian-gmeiner.info/2009-12-03-audiodecoder-und-1-7-10/</link>
      <pubDate>Thu, 03 Dec 2009 12:41:43 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-12-03-audiodecoder-und-1-7-10/</guid>
      <description>&lt;p&gt;Endlich habe ich auf meinem VDR die Version 1.7.10 installiert und schon bin ich mir sicher,
was ich die nächsten Stunden zu machen habe.
So wie es aussieht braucht der audiodecoder eine Grunderneuerung, damit die Soundprobleme
mit der 1.7.10 Version gefixt werden können. Ich nutzte diese Gelegenheit um den Release einer
neuen Version zu verschieben. Des Weiterem gibt es auch noch ein paar Bugreports, die ich in Angriff
nehmen sollte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brauche eure Hilfe</title>
      <link>https://christian-gmeiner.info/2009-11-17-brauche-eure-hilfe/</link>
      <pubDate>Tue, 17 Nov 2009 11:33:11 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-11-17-brauche-eure-hilfe/</guid>
      <description>&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;meine Schwester benötigt für ihre &lt;span style=&#34;letter-spacing: 0px;&#34;&gt;Bachelorarbeit zum Thema „Der Einsatz von Social Media beim Verkauf von Merchandise-Produkten − Dargestellt an einem Praxisbeispiel aus der Musikbranche“ eure Hilfe.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;letter-spacing: 0px;&#34;&gt;Einfach &lt;a href=&#34;http://vote.sinceyouaredead.at&#34;&gt;http://vote.sinceyouaredead.at&lt;/a&gt; besuchen und sich 10 Minuten Zeit nehmen um die Umfrage zu beantworten. Unter allen Teilnehmer – EMail-Adresse vorausgesetzt – werden Preise verlost.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;letter-spacing: 0px;&#34;&gt;Danke!
&lt;/span&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>London ich komme...</title>
      <link>https://christian-gmeiner.info/2009-10-23-london-ich-komme/</link>
      <pubDate>Fri, 23 Oct 2009 21:04:16 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-10-23-london-ich-komme/</guid>
      <description>&lt;p&gt;Die nächsten 5 Tage bin ich auf kurz Urlaub in London und werde aus diesem Grund unwahrscheinlich Mails beantworten…&lt;/p&gt;
&lt;p&gt;Schönes Wochenende&lt;/p&gt;</description>
    </item>
    <item>
      <title>StillPictures</title>
      <link>https://christian-gmeiner.info/2009-10-16-stillpictures/</link>
      <pubDate>Fri, 16 Oct 2009 11:53:07 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-10-16-stillpictures/</guid>
      <description>&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;endlich habe ich mich getraut, den alten SpuEncoder durch den neuen zu ersetzten, auch wenn es noch zu Problemen
kommen kann. Doch dies war ein wichtiger Schritt in die richtige Richtung.&lt;/p&gt;
&lt;p&gt;Bevor ich die bekannten Bugs im SpuEncoder behebe, brauche ich ein bisschen Abstand und von dieser Thematik und bin dabei die StillPicture-Methode zu fixen. Wie es sich herausstellt ist das Vorhaben – wie sollte es anders sein – nicht ganz trivial. Zu aller erst muss ich mich mit den verschiedenen Playmodes vertraut machen und da habe ich schon ein paar Dinge gefunden, die im Treiber nicht vorhanden sind. Ein Beispiel wäre hier  EM8300_PLAYMODE_SINGLESTEP. Ist zwar in der em8300.h vorhanden, wird aber vom Treiber nicht unterstützt.
Das wird noch eine interessante Reise in das Land der em8300 werden. Es wäre schön, wenn es eine ordentlich dokumentierte API für die Treiber geben würde. Bin es aber eh schon gewohnt immer alles auszuprobieren zu müssen und nach 1-2 Tagen hackings eine Lösung zu finden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ticket #166</title>
      <link>https://christian-gmeiner.info/2009-10-05-ticket-166/</link>
      <pubDate>Mon, 05 Oct 2009 15:28:08 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-10-05-ticket-166/</guid>
      <description>&lt;p&gt;Im Moment bin ich dabei &lt;a href=&#34;http://projects.vdr-developer.org/issues/show/166&#34;&gt;diesen Bugrepor&lt;/a&gt;t zu fixen und habe auch schon herausgefunden, was falsch läuft.
Nun bin ich soweit, dass ich alle Areas des OSD auch probiere auszugeben. Und zwar encode ich im Moment
jede Area und schreibe die Daten an das SPU-Subdevice. Nun dachte ich mir, dass die anzeigten OSD-Teile auch so lange
angezeigt werden, bis ich das OSD von Hand cleane. Doch dies scheint leider nicht zu funktionieren. Im Moment
flackern alle Areas eines OSD auf dem TV… sprich beim Schreiben einer Area, wird das bereits angezeigte OSD gelöscht.
Mal schauen, ob ich das einfach fixen kann… ansonsten wird es schwieriger….&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tester gesucht</title>
      <link>https://christian-gmeiner.info/2009-09-30-tester-gesucht/</link>
      <pubDate>Wed, 30 Sep 2009 08:43:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-09-30-tester-gesucht/</guid>
      <description>&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;ich bin auf der Suche nach Testern für das neue OSD.  Dazu einfach die aktuelle Entwicklerversion
des Plugins herunterladen, installieren und testen.&lt;/p&gt;
&lt;p&gt;Die Entwicklerversion ist entweder &lt;a href=&#34;http://projects.vdr-developer.org/git/?p=vdr-plugin-dxr3.git;a=snapshot;h=4e6085d8aa2f11c9decba9674ef9152ce6292f65;sf=tgz&#34;&gt;hier&lt;/a&gt; oder via git unter &lt;code&gt;git://&amp;lt;a href=&amp;quot;http://community.xeatre.tv/vdr-plugin-dxr3.git&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;community.xeatre.tv/vdr-plugin-&amp;lt;span&amp;gt;dxr3&amp;lt;/span&amp;gt;.git&amp;lt;/a&amp;gt;&lt;/code&gt;
verfügbar.
Probleme, Wünsche etc. bitte unter &lt;a href=&#34;http://projects.vdr-developer.org/projects/show/plg-dxr3&#34;&gt;http://projects.vdr-developer.org/projects/show/plg-dxr3&lt;/a&gt; melden.&lt;/p&gt;
&lt;p&gt;Danke an Alle&lt;/p&gt;</description>
    </item>
    <item>
      <title>OSD Update [UP2]</title>
      <link>https://christian-gmeiner.info/2009-09-24-osd-update/</link>
      <pubDate>Thu, 24 Sep 2009 18:47:24 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-09-24-osd-update/</guid>
      <description>&lt;p&gt;Hier mal ein Foto direkt von meinem TV. Zu sehen ist der aktuelle Stand des Plugins mit dem OSD-rewrite. OSD Regionen werden erkannt doch im Bitstream scheint noch was nicht ganz okay zu sein. Mal schauen wie lange ich dafür noch brauche.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.christian-gmeiner.info/wordpress/wp-content/uploads/2009/09/l_1600_1200_FF74AA24-3B9C-4B3D-9FFE-D2ABFF07F8F7.jpeg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.christian-gmeiner.info/wordpress/wp-content/uploads/2009/09/l_1600_1200_FF74AA24-3B9C-4B3D-9FFE-D2ABFF07F8F7.jpeg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier noch zwei Screenshots, die das kleine Tool gtkspu zeigen, welches einen SPU-Datenstrom darstellen kann. Hier sieht das Ganze nicht so schlecht aus. Bei meinem Source stimmen auf jeden Fall die Farben nicht.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ein Update</title>
      <link>https://christian-gmeiner.info/2009-09-12-ein-update/</link>
      <pubDate>Sat, 12 Sep 2009 20:55:47 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-09-12-ein-update/</guid>
      <description>&lt;p&gt;Jaja… lange ist es her, der letzte Eintrag und scheinbar hat sich immer noch nicht viel geändert. Immer diese Versprechen auf mehr… auf ein besseres Plugin. Nun es stimmt, ich habe 4 verschiedene Checkouts des Source, die alle andere Problembereiche verbessern.&lt;/p&gt;
&lt;p&gt;Nun da meine Masterarbeit abgeschlossen ist und ich am kommenden Donnerstag meine Masterprüfung (mündlich) habe, finde ich langsam wieder Zeit für das Plugin. Und das erste das unbedingt gefixt werden muss ist das OSD. Der Source wird leichter verständlich und ist übersichtlicher. Was noch fehlt ist das Handling für Bpp != 2 und hier mache ich diesen Moment gute Fortschritte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zapping ohne Ruckler</title>
      <link>https://christian-gmeiner.info/2009-06-13-zapping-ohne-ruckler/</link>
      <pubDate>Sat, 13 Jun 2009 01:21:47 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-06-13-zapping-ohne-ruckler/</guid>
      <description>&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;mittlerweile ist viel passiert und der syncbuffer und das demuxdevice sind komplett aus dem Source verschwunden. Und mein erstes Teilziel ist erreicht. Ich kann zwischen den Kanälen zappen und ich bekomme jedes mal ohne Tonknister und Co. einen sauberen Sound und das mit guten Umschaltzeiten.
Eine Problem für die vielen Probleme mit dem Sync waren dann bemerkbar, als ein OSD angezeigt wurde… habe die Ausgabe abgedreht und siehe da… um Welten besser.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mal ein kleines Update</title>
      <link>https://christian-gmeiner.info/2009-05-20-mal-ein-kleines-update/</link>
      <pubDate>Wed, 20 May 2009 12:18:14 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-05-20-mal-ein-kleines-update/</guid>
      <description>&lt;p&gt;Meine Masterarbeit befindet sich in einem guten Status und nun habe ich wieder einmal ein wenig
Zeit für das Plugin gefunden. Der neue SpuEncoder funktioniert schon recht gut, nur bei mehr als
4 Farben steigt er aus. Habe schon alles vorbereit um mit 16 Farben zu arbeiten, doch mir fehlt noch
ein Algorithmus, wie ich am besten die unterschiedlichen Regionen erkennen kann.&lt;/p&gt;
&lt;p&gt;Eine Region hat einen Start- u. Endzeile und wird genauer ducht Sektionen bestimmt – mittels Startreihe.
Ich hoffe ich finde bzw. erfinde solch einen Erkennungsalgorithmus… dann wäre das OSD wesentlich besser.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pes-Parser rewrite done</title>
      <link>https://christian-gmeiner.info/2009-04-19-pes-parser-rewrite-done/</link>
      <pubDate>Sun, 19 Apr 2009 19:33:23 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-04-19-pes-parser-rewrite-done/</guid>
      <description>&lt;p&gt;Habe soeben mal einen Tree gepusht und darin enthalten ist ein der neue Pes-Parser. Desweiteren habe ich den alten
Source ordentlich aufgeräumt. Dabei bin ich schon auf die nächste Baustelle getroffen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cFixedLengthFrame oder warum doppele Datenhaltung&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Im Moment wird aus dem Pes-Stream ein cDxr3PesFrame definiert, welcher wichtige Informationen ala Pes, Payload etc.
beinhaltet. Dann wird – unter gewissen Umständen – dieser cDxr3PesFrame in einen cFixedLengthFrame kopiert und im
SyncBuffer verarbeitet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ein Vergleich - neuer vs. alter Spu Osd Code</title>
      <link>https://christian-gmeiner.info/2009-04-15-ein-vergleich-neuer-vs-alter-spu-osd-code/</link>
      <pubDate>Wed, 15 Apr 2009 22:07:46 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-04-15-ein-vergleich-neuer-vs-alter-spu-osd-code/</guid>
      <description>&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;im moment Arbeite ich daran den neuen Pes-Parser in das Plugin zu integrieren. Leider ist das nicht immer so einfach
um die Gefahr, neue Bugs zu erzeugen, ist relativ hoch. Ich muss mir langsam auch mal Gedanken machen, wann
ich ein Art Beta-Version machen sollte. Ich denke, dass dies noch so lange dauern wird, bis auch das Buffering und Syncing
überarbeitet ist.&lt;/p&gt;
&lt;p&gt;Nun mal ein Blick in die Vergangenheit 🙂
Ich habe vor mehreren Monaten begonnen, das Plugin von Grundauf neu zu schreiben… unter anderem auch das OSD… ich verwendete
zum testen gtkspu und ich denke der Unterschied ist sehr gut sichtbar.  Oben der neue OSD Code und unten der alte OSD Code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Buffering und Sync</title>
      <link>https://christian-gmeiner.info/2009-03-23-buffering-und-sync/</link>
      <pubDate>Mon, 23 Mar 2009 19:41:33 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-03-23-buffering-und-sync/</guid>
      <description>&lt;p&gt;Nachdem ich nun einen schlanken und gut dokumintierten und v.a. funktionierenden Pes-Parser habe, bin ich
mir am überlegen, wie ich nun weitermachen sollte. Ich könnte nun Glue-Code  dem neuen Pes-Parser hinzufügen
und Stück für Stück so weiter machen wie bis her, oder ich mache einfach dies:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git rm dxr3syncbuffer.c
git rm dxr3syncbuffer.h
git rm dxr3demuxdevice.c
git rm dxr3demuxdevice.h&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das ist zwar eine brachialte Art und Weise, doch irgnedwann muss man das Buffering und Syncing neu schreiben. Nun
geht es darum, alles wieder ohne Fehler zum compilieren zu bringen und dann das Plugin wieder so funktionstüchtig zu
machen wie die 0.2.9 Version. Es werden große Änderungen sein, doch es wird sich auszahlen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PesFrame reworking</title>
      <link>https://christian-gmeiner.info/2009-03-23-pesframe-reworking/</link>
      <pubDate>Mon, 23 Mar 2009 10:34:58 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-03-23-pesframe-reworking/</guid>
      <description>&lt;p&gt;Heute habe ich wieder ein wenig Zeit gefunden, um am dxr3 Plugin zu arbeiten und bin im Moment
an der PesFrame-Baustelle dran. Der jetzige Source ist leider nicht gerade sehr übersichtlich und
verständlich geschrieben. Aus diesem Grund wird die PesFrame KLasse komplett neu geschrieben und
nach meiner Einschätzung wesentlich besser zu verstehen und auch von der Laufzeit optimiert, da kein
cDxr3SafeArray verwendet wird – wozu auch.&lt;/p&gt;
&lt;p&gt;Ich bin mir auch im klaren darüber, dass die jetzige git Version evt nicht so stabil läuft wie die 0.2.9, doch
das ist nur normal, wenn man viele Dinge über den Haufen wirft und neu erfindet. Gut Ding brauch seine Zeit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alsa Support</title>
      <link>https://christian-gmeiner.info/2009-02-26-alsa-support/</link>
      <pubDate>Thu, 26 Feb 2009 12:19:49 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2009-02-26-alsa-support/</guid>
      <description>&lt;p&gt;Nachdem das letzte Semester sehr zeitintensiv war fand ich leider sehr wenig Zeit für opensource Projekte.
Doch im Moment genieße ich die freie Zeit die zur Verfügung habe und stecke im Moment viel Zeit in das
vdr-plugin-dxr3.&lt;/p&gt;
&lt;p&gt;Mein großes Ziel ist zum einen Alsa für die Soundausgabe zu unterstützten und zum anderen das Plugin
wesentlich stabiler zu machen.
Alsa funktioniert schon recht gut, auch wenn es noch Probleme beim Umschalten geben kann und Digital PCM
und AC3 noch nicht unterstützt werden. Doch ich bin auf dem richtigen Weg.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Treasure Hunt 2008</title>
      <link>https://christian-gmeiner.info/2008-11-07-google-treasure-hunt-2008/</link>
      <pubDate>Fri, 07 Nov 2008 10:25:33 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-11-07-google-treasure-hunt-2008/</guid>
      <description>&lt;p&gt;Ich heute zufällig über &lt;a href=&#34;http://planetkde.org/&#34;&gt;http://planetkde.org/&lt;/a&gt; auf den &lt;a href=&#34;http://treasurehunt.appspot.com&#34;&gt;Google Treasure Hunt 2008&lt;/a&gt; aufmerksam geworden und habe es natürlich gleich ausprobiert. Ich habe folgende Aufgabe bearbeitet:&lt;/p&gt;
&lt;p&gt;*Unzip the archive, then process the resulting files to obtain a numeric result. You’ll be taking the sum of lines from files matching a certain description, and multiplying those sums together to obtain a final result. Note that files have many different extensions, like ‘.pdf’ and ‘.js’, but all are plain text files containing a small number of lines of text. *&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jaja... ich schreib auch wieder mal was</title>
      <link>https://christian-gmeiner.info/2008-10-27-jaja-ich-schreib-auch-wieder-mal-was/</link>
      <pubDate>Mon, 27 Oct 2008 21:08:43 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-10-27-jaja-ich-schreib-auch-wieder-mal-was/</guid>
      <description>&lt;p&gt;Lange lange ist her, dass das letzte mal etwas geschrieben habe, ich bin einfach nicht der Blogger 🙂
Doch in der Zwischenzeit hat sich einiges getan.&lt;/p&gt;
&lt;p&gt;Zum einen hat das nächste Semester des Master-Studiums begonnen und aus diesem Grund habe ich einiges um die Ohren. Angefangen von AVR32 über Simulation und Modellierung bis hin zur IPhone-Programmierung. Doch auch meine Arbeit in der großen Welt des Open-Source ist auch noch da, wenn nicht immer sichtbar. Ich arbeite, wenn ich Zeit finde an allem was mit Dxr3 zu tun hat und sende hier und da ein paar Patches ab. Wenn alles nach meinem Willen geht, sollte der em8300 Treiber irgendwann in den offiziellen Kernel kommen und sich schön in V4l2 integrieren. Doch bis dahin habe ich noch einiges vor mir. Es ist immer wieder schwer, ob ich am Plugin oder am Treiber weiter arbeiten soll, doch das Plugin muss endlich mal raus. Wäre doch schade um die viele Arbeit.. tja.. bald ist wieder mal Wochenende und evt kann ich dann wieder hacken.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpuEncoder</title>
      <link>https://christian-gmeiner.info/2008-07-31-spuencoder/</link>
      <pubDate>Thu, 31 Jul 2008 17:22:35 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-07-31-spuencoder/</guid>
      <description>&lt;p&gt;Endlich ist es geschafft… ein 4Fraben Osd wird mit dem neuen OSD Code des Dxr3-Plugins angezeigt. Der
verwendete Source ist noch recht voll mit Debug-Stuff und ist auch noch vom Softwaredesign schlecht.
Das möchte ich aber in den kommenden Tagen ändern. Das neue OSD wird auf alle Fälle besser als das alte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>0x00 und andere Dinge</title>
      <link>https://christian-gmeiner.info/2008-07-25-0x00-und-andere-dinge/</link>
      <pubDate>Fri, 25 Jul 2008 16:24:21 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-07-25-0x00-und-andere-dinge/</guid>
      <description>&lt;p&gt;Leider bin ich schon lange nicht mehr dazu gekommen um ein wenig was zu schreiben. Doch nun endlich
ist dieser Moment gekommen 🙂&lt;/p&gt;
&lt;p&gt;Es sind Ferien und man hat hin und wieder Zeit ein wenig was zu programmieren… das Dxr3-Plugin ist fast so weit, dass das OSD funktioniert. Ich habe das OSD-Bitmap mit rle encoded, habe das OSD in Regionen zu max 4 Farben aufgeteilt und kenne auch schon das DVD Subtitle Format recht gut, doch
es ist einfach noch nichts zu sehen… entweder habe ich noch was vergessen oder das erstellte Paket ist $%@%.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sound.c und die audiohw api</title>
      <link>https://christian-gmeiner.info/2008-05-15-soundc-und-die-audiohw-api/</link>
      <pubDate>Thu, 15 May 2008 00:37:55 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-05-15-soundc-und-die-audiohw-api/</guid>
      <description>&lt;p&gt;In den letzten Tagen und Wochen war ich recht fleißig und habe weiter an der audiohw API gearbeitet. Mittlerweile ist es mir
gelungen die ifdef-hell ein wenig zu säubern und den Code dadurch wesentlich übersichtlicher zu machen.
In den nächsten Wochen möchte ich gerne folgende Punkte erledigen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prüfen ob &lt;em&gt;audio_is_initialized&lt;/em&gt; überhaupt benötigt wird&lt;/li&gt;
&lt;li&gt;Eine elegante Lösung für &lt;em&gt;set_prescaled_volume&lt;/em&gt; finden (audiohw_set_volume(l, r))&lt;/li&gt;
&lt;li&gt;Einige Sainty-Checks einbauen, ob eine bestimmte AUDIOHW_CAPS Kombination ok ist&lt;/li&gt;
&lt;li&gt;&lt;em&gt;sound_val2phys&lt;/em&gt; in die Audio-Codec Treiber auslagern&lt;/li&gt;
&lt;li&gt;Für die cutoff Funktionen eigene CAPS definieren und verwenden&lt;/li&gt;
&lt;li&gt;Support für 1.5 DB Schritte verbessern&lt;/li&gt;
&lt;li&gt;&lt;em&gt;sound_set_loudness&lt;/em&gt; und Co in den mas35xx Treiber verschieben&lt;/li&gt;
&lt;li&gt;Den DSP für den Simulator verwenden&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es ist zwar eine lange Liste, doch ich bin nicht unter Zeitdruck 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Audio device: nVidia Corporation MCP61 High Definition Audio (rev a2)</title>
      <link>https://christian-gmeiner.info/2008-05-06-audio-device-nvidia-corporation-mcp61-high-definition-audio-rev-a2/</link>
      <pubDate>Tue, 06 May 2008 09:50:23 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-05-06-audio-device-nvidia-corporation-mcp61-high-definition-audio-rev-a2/</guid>
      <description>&lt;p&gt;Ich hatte gerade das Problem, dass die MCP61 rev a2 keinen Ton von sich gab. Es handelt sich dabei um ein &lt;strong&gt;Biostar NF61S-M2A&lt;/strong&gt; Mainboard. Um nun die Onboard Soundkarte zur Kooperation zu bewegen, muss man einfach den &lt;strong&gt;Intel HDA&lt;/strong&gt; Treiber verwenden und diese Zeilen in die &lt;strong&gt;/etc/modprobe.conf&lt;/strong&gt; einfügen:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;options snd-hda-intel enable=1 index=0
alias snd-card-0 snd-hda-intel
options snd-hda-intel model=6stack&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Happy Hacking&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenRC</title>
      <link>https://christian-gmeiner.info/2008-04-15-openrc/</link>
      <pubDate>Tue, 15 Apr 2008 13:51:13 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-04-15-openrc/</guid>
      <description>&lt;p&gt;Nachdem ich nun meinen Arbeitsrechner neu aufgesetzt habe, dachte ich mir, dass gleich auch noch OpenRC probieren könnte. Mit Hilfe des &lt;a href=&#34;http://www.gentoo.org/doc/en/openrc-migration.xml&#34;&gt;Migration Guide&lt;/a&gt; verlief die Umstellung ohne Probleme und der erste Boot mit OpenRC wurde ausgeführt. Und ich bin sehr erstaunt wie einfach alles ging und das gute an der ganzen Sache… das System startet schneller 🙂&lt;/p&gt;
&lt;p&gt;Nachdem mein Arbeitsrechner nun wieder online ist, werde ich weiter an meinen Projekten arbeiten und hin und wider mal blogen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>vdr -h</title>
      <link>https://christian-gmeiner.info/2008-03-29-vdr-h/</link>
      <pubDate>Sat, 29 Mar 2008 16:55:10 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-03-29-vdr-h/</guid>
      <description>&lt;p&gt;Usage: vdr [OPTIONS]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Plugins: vdr -P”name [OPTIONS]”&lt;/p&gt;
&lt;p&gt;dxr3 (0.3.0_rc1) – em8300 based output device&lt;/p&gt;
&lt;p&gt;-v {pal/ntsc}                –videosystem {pal/ntsc}                 video system to use
default: pal&lt;/p&gt;</description>
    </item>
    <item>
      <title>dxr3-plugin 0.3.0 progress</title>
      <link>https://christian-gmeiner.info/2008-03-28-dxr3-plugin-030-progress/</link>
      <pubDate>Fri, 28 Mar 2008 21:59:25 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-03-28-dxr3-plugin-030-progress/</guid>
      <description>&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;habe heute ein wenig Zeit gefunden, und habe nun einen Lippen-Synchronen Ton mit passendem Bild 🙂
Leider ist der A/V-Sync Code noch nicht sehr ausgereift und deswegen geht beim Umschalten entweder Bild
oder Ton verloren. Das ‘Problem’ sollte ich über das Wochenende gefixt haben und dann kann ich wieder
einen Punkt aus meiner ToDo streichen.&lt;/p&gt;
&lt;p&gt;Als nächstes werde ich entweder das OSD angehen, oder eine Infrastruktur entwickeln, damit der &lt;em&gt;GrabImage&lt;/em&gt;-API
Aufruf funktioniert bzw das Spektrum-Analyser PCM-Daten vom Plugin bekommt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A/V Syncronization</title>
      <link>https://christian-gmeiner.info/2008-03-05-av-syncronization/</link>
      <pubDate>Wed, 05 Mar 2008 03:11:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-03-05-av-syncronization/</guid>
      <description>&lt;p&gt;Mittlerweile läuft meine Version des Dxr3 Plugins recht gut. Es gibt noch ein paar Probleme mit dem A/V Sync. Im Moment arbeite ich an einem neuen OSD und SpuEncoder Teil, bei dem ich schon einige Fortschritte gemacht habe. Zum einen funktioniert die RLE
Kodierung der SPU-Pixelwerte und das mit Hilfe von std::bitset&amp;lt;&amp;gt; und zum anderen habe ich dsa Prinzip hinter der Funktionsweise des
OSD’s komplett verstanden.&lt;/p&gt;
&lt;p&gt;Nachdem A/V Sync gefixt ist und das OSD funktioniert habe ich folgendes noch auf meiner Liste (ausschnitt. nicht sortiert nach Prio)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dxr3-Plugin 0.3.0</title>
      <link>https://christian-gmeiner.info/2008-02-26-dxr3-plugin-030/</link>
      <pubDate>Tue, 26 Feb 2008 15:49:14 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-02-26-dxr3-plugin-030/</guid>
      <description>&lt;p&gt;Nachdem ich schon seit eingier Zeit an einer neuen Version des VDR Plugins abreite, habe ich die letzten Tage sehr viel Zeit zum
programmieren gefunden und habe  das Dxr3  Plugin komplett neu geschrieben. Im Moment arbeite ich am A/V sync, und sonst noch
ein paar Goodies.&lt;/p&gt;
&lt;p&gt;Hier mal ein kleiner Vorgeschmack:&lt;/p&gt;
&lt;p&gt;Feb 26 14:44:59 vdr vdr: [24405] initializing plugin: dxr3 (0.3.0_rc1): TODO
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-decoder] using avcodec/ffmpeg version 3352580 build 3352580
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ready…
Feb 26 14:44:59 vdr vdr: [24405] ERROR: /dev/em8300_ma-0: Datei oder Verzeichnis nicht gefunden
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-output-audio] using alsa driver
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ioctl 1074021127 on 0 with result 0
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ioctl 1074545410 on 0 with result 0
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ioctl 1074021126 on 0 with result 0
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ioctl 1074021137 on 0 with result 0
Feb 26 14:44:59 vdr vdr: [24405] [dxr3-interface] ioctl 1074021136 on 0 with result 0
Feb 26 14:44:59 vdr vdr: [24405] initializing plugin: live (0.1.0): Live Interactive VDR Environment
Feb 26 14:44:59 vdr vdr: [24405] setting primary device to 2
Feb 26 14:44:59 vdr vdr: [24412] Audio-Output Thread (dxr3) thread started (pid=24405, tid=24412)
Feb 26 14:44:59 vdr vdr: [24413] Video-Output Thread (dxr3) thread started (pid=24405, tid=24413)
Feb 26 14:44:59 vdr vdr: [24405] assuming manual start of VDR
Feb 26 14:44:59 vdr vdr: [24405] SVDRP listening on port 2001
Feb 26 14:44:59 vdr vdr: [24405] setting current skin to “sttng”
Feb 26 14:44:59 vdr vdr: [24405] loading /etc/vdr//themes/sttng-default.theme
Feb 26 14:44:59 vdr vdr: [24405] starting plugin: dxr3
Feb 26 14:44:59 vdr vdr: [24405] starting plugin: live
Feb 26 14:44:59 vdr vdr: [24405] LIVE: initial file cache has 82 entries and needs 300358 bytes of data!
Feb 26 14:44:59 vdr vdr: [24416] KBD remote control thread started (pid=24405, tid=24416)
Feb 26 14:44:59 vdr vdr: [24405] remote control KBD – learning keys
Feb 26 14:44:59 vdr vdr: [24405] ERROR: no OSD provider available – using dummy OSD!
Feb 26 14:45:01 vdr vdr: [24409] CAM 1: no module present
Feb 26 14:45:09 vdr vdr: [24405] switching to channel 2
Feb 26 14:45:09 vdr vdr: [24424] transfer thread started (pid=24405, tid=24424)
Feb 26 14:45:09 vdr vdr: [24425] receiver on device 1 thread started (pid=24405, tid=24425)
Feb 26 14:45:09 vdr vdr: [24426] TS buffer on device 1 thread started (pid=24405, tid=24426)
Feb 26 14:45:09 vdr vdr: [24405] ERROR: no OSD provider available – using dummy OSD!
Feb 26 14:45:09 vdr vdr: [24405] live reloading timers
Feb 26 14:45:10 vdr vdr: [24413] [dxr3-output] starting
Feb 26 14:45:10 vdr vdr: [24424] setting audio track to 1 (0)
Feb 26 14:45:10 vdr vdr: [24424] [dxr3-audio-alsa] switching to analog audio
Feb 26 14:45:10 vdr vdr: [24412] [dxr3-output] starting
Feb 26 14:45:10 vdr vdr: [24412] [dxr-audio-alsa] changing samplerate to 48000 (old 0)
Feb 26 14:45:10 vdr vdr: [24412] [dxr-audio-alsa] changing num of channels to 2 (old 0)&lt;/p&gt;</description>
    </item>
    <item>
      <title>AudioHw Unification</title>
      <link>https://christian-gmeiner.info/2008-02-14-audiohw-unification/</link>
      <pubDate>Thu, 14 Feb 2008 15:40:09 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-02-14-audiohw-unification/</guid>
      <description>&lt;p&gt;Im Moment nutze ich meine Freizeit um die AudioHw-Schicht in Rockbox ein wenig aufzuräumen und v.a. firmware/sound.c aufzuräumen und zu vereinfachen.&lt;/p&gt;
&lt;p&gt;Hier einmal die großen Ziele von diesem Projekt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eigener Audio-Treiber für die zwei Mas-Codec&lt;/li&gt;
&lt;li&gt;Einfache Möglichkeit um für ein Codec zu definieren was es alles in Hardware machen kann
Z.b.: Bass, Prescaler,…&lt;/li&gt;
&lt;li&gt;Einheitliches Interface um die Lautstärke zu regulieren –&amp;gt; audiohw_set_volume(l, r)&lt;/li&gt;
&lt;li&gt;Preinit/Postinit aufräume&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eine sehr große Liste, doch sollte machbar sein. Ich freue mich schon auf ein paar Stunden Programmierarbeit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>checking for XML::Parser... configure: error: XML::Parser perl module...</title>
      <link>https://christian-gmeiner.info/2008-02-14-checking-for-xmlparser-configure-error-xmlparser-perl-module/</link>
      <pubDate>Thu, 14 Feb 2008 12:21:14 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-02-14-checking-for-xmlparser-configure-error-xmlparser-perl-module/</guid>
      <description>&lt;p&gt;is equired for intltool.&lt;/p&gt;
&lt;p&gt;Dieser Fehler bekam ich bei einem Update des NetworkManager’s unter Gentoo. Scheinbar ist hängt dies mit Perl, intltool und dem xml parser zusammen. Für mehr Informationen einfach einen Blick auf &lt;a href=&#34;https://bugs.gentoo.org/show_bug.cgi?id=41124&#34; title=&#34;Gentoo Bugs&#34;&gt;https://bugs.gentoo.org/show_bug.cgi?id=41124&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Und hier nun die sehr einfache Lösung – works for me(tm)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;emerge  XML-Parser networkmanger&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Happy Hacking..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Star Wars...</title>
      <link>https://christian-gmeiner.info/2008-01-16-star-wars/</link>
      <pubDate>Wed, 16 Jan 2008 14:10:55 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-01-16-star-wars/</guid>
      <description>&lt;p&gt;Welcher Star Wars-Fan und Geek wollte nich nie Star Wars ala Ascii-Art sehen?!
So einfach funktioniert es: telnet towel.blinkenlights.nl&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ein schöner Tag...</title>
      <link>https://christian-gmeiner.info/2008-01-11-ein-schoner-tag/</link>
      <pubDate>Fri, 11 Jan 2008 22:32:44 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-01-11-ein-schoner-tag/</guid>
      <description>&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://kde.org/img/kde40.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ich spiele im Moment mit dem Gedanken bei der Entwicklung von KDE aktiv mitzuwirken. Wäre auf jeden Fall keine schlechte Idee, da ein so grosses
Projekt nie genug fähige  Programmierer,  Artiests, … haben kann.&lt;/p&gt;</description>
    </item>
    <item>
      <title>M-Audio Keystation 49e USB midi-keyboard</title>
      <link>https://christian-gmeiner.info/2008-01-07-m-audio-keystation-49e-usb-midi-keyboard/</link>
      <pubDate>Mon, 07 Jan 2008 13:01:11 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2008-01-07-m-audio-keystation-49e-usb-midi-keyboard/</guid>
      <description>&lt;p&gt;Wie ich auf der Seite von linuxdriverproject sehen kann, schein das M-Audio 49e midi-keyboard und Linux nicht zu funktionieren. Dem kann ich nicht zustimmen und werde hier ein kleines HowTo posten.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Als ersten einmal die Ausgabe von &lt;em&gt;lsusb -vvv&lt;/em&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bus 002 Device 012: ID 0a4d:0090 Evolution Electronics, Ltd
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0a4d Evolution Electronics, Ltd
idProduct 0x0090
bcdDevice 1.13
iManufacturer 1 Evolution Electronics Ltd.
iProduct 2 USB Keystation 49e
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 101
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 3 Audio Class
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 9
bInCollection 1
baInterfaceNr( 0) 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 3 MIDI Streaming
bInterfaceProtocol 0
iInterface 0
MIDIStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 65
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 1 Embedded
bJackID 1
iJack 0
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 2 External
bJackID 2
iJack 0
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 1 Embedded
bJackID 3
bNrInputPins 1
baSourceID( 0) 2
BaSourcePin( 0) 1
iJack 0
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 2 External
bJackID 4
bNrInputPins 1
baSourceID( 0) 1
BaSourcePin( 0) 1
iJack 0
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 5
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 3
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 5
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 1
Device Status: 0x0000
(Bus Powered)&lt;/p&gt;</description>
    </item>
    <item>
      <title>KDE 4</title>
      <link>https://christian-gmeiner.info/2007-12-11-kde-4/</link>
      <pubDate>Tue, 11 Dec 2007 10:44:31 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-12-11-kde-4/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;KDE 4.0 Release Counter&#34; loading=&#34;lazy&#34; src=&#34;http://games.kde.org/new/counter/&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Serial over USB</title>
      <link>https://christian-gmeiner.info/2007-11-30-serial-over-usb/</link>
      <pubDate>Fri, 30 Nov 2007 02:22:55 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-11-30-serial-over-usb/</guid>
      <description>&lt;p&gt;Nachdem ein neuer Stack meine alten USB-Stack, welcher im Google Summer of Code für &lt;a href=&#34;http://www.rockbox.org&#34;&gt;RockBox&lt;/a&gt; erstellt wurde, durch einen wenig objektorientierten und nicht so generischen USB-Stack ersetzt wurde, habe ich in weniger als 20 Minuten einen serial Treiber geschrieben.  Leider ist der neue Stack noch fertig und es fehlt eine wichtige Funktionalität: Umschalten zwischen verschieden device Treibern zur Laufzeit… bald ist ja Wochenende.&lt;/p&gt;
&lt;p&gt;Revision 15850 rockt 🙂&lt;/p&gt;
&lt;h1 id=&#34;modprobe-usbserial-vendor0x0781-product0x7421-debug1&#34;&gt;modprobe usbserial vendor=0x0781 product=0x7421 debug=1&lt;/h1&gt;
&lt;h1 id=&#34;picocom-devttyusb0&#34;&gt;picocom /dev/ttyUSB0&lt;/h1&gt;</description>
    </item>
    <item>
      <title>EBNF</title>
      <link>https://christian-gmeiner.info/2007-11-28-ebnf/</link>
      <pubDate>Wed, 28 Nov 2007 02:02:27 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-11-28-ebnf/</guid>
      <description>&lt;p&gt;Für das Seminar “Konzepte konkreter und abstrakter Maschinen” habe ich einen kleinen &lt;a href=&#34;http://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form&#34; title=&#34;EBNF@Wikipedia&#34;&gt;EBNF&lt;/a&gt;-Parser geschrieben, der die Korrektheit der EBNF-Syntax prüft und die Regeln verdeutscht. Der Parser wurde in Java innerhalb von kapp 2 Stunden entwickelt…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;digit = ‘0’|’1’|’2′.
hexdigit = digit|’A’|’B’|’C’|’D’|’E’|’F’.
vorzeichen = ‘-‘|’+’.
zahl = [vorzeichen] hexdigit {hexdigit}.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wird zu:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;digit = ‘0’ oder ‘1’ oder ‘2’
hexdigit = ‘digit’ oder ‘A’ oder ‘B’ oder ‘C’ oder ‘D’ oder ‘E’ oder ‘F’
vorzeichen = ‘-‘ oder ‘+’
zahl = entweder leer oder gleich ‘vorzeichen’ ‘hexdigit’ keinem, einem, oder mehreren ‘hexdigit’
EBNF check ok&lt;/p&gt;</description>
    </item>
    <item>
      <title>Icecream.. *lecker*</title>
      <link>https://christian-gmeiner.info/2007-11-01-icecream-lecker/</link>
      <pubDate>Thu, 01 Nov 2007 18:39:50 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-11-01-icecream-lecker/</guid>
      <description>&lt;p&gt;Wer &lt;a href=&#34;http://www.gentoo.org&#34; title=&#34;Gentoo Linux&#34;&gt;Gentoo&lt;/a&gt; verwendet oder sehr viel Code compilieren muss, sollte sich Gedanken machen wie man das Compileren beschleunigen könnte. Eine Lösung wäre die Verwendung eines Compile-Clusters. Ich habe mich hierbei für &lt;a href=&#34;http://en.opensuse.org/Icecream&#34; title=&#34;Icecream&#34;&gt;Icecream&lt;/a&gt; entschieden. Wie immer eine kleine Installationsanleitung für Gentoo 🙂&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h1 id=&#34;emerge-sys-develicecream&#34;&gt;emerge sys-devel/icecream&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h1 id=&#34;rc-update-add-icecream-default&#34;&gt;rc-update add icecream default&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;/etc/conf.d/icecream&lt;/em&gt; nach eigenen Wünschen bearbeiten*&lt;/li&gt;
&lt;li&gt;
&lt;h1 id=&#34;etcinitdicecream-start&#34;&gt;/etc/init.d/icecream start&lt;/h1&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diese Schritte auf allen Gentoo Maschienen durchführen, welche am Compile-Cluster teilhaben sollen.&lt;/p&gt;
&lt;p&gt;Nachdem der Cluster nun einsatzbereit ist, muss nur noch &lt;em&gt;/etc/make.conf&lt;/em&gt; und &lt;strong&gt;PATH&lt;/strong&gt; angepasst werden, damit der Cluster verwendet werden kann.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Schlaf Laptop schlaf...</title>
      <link>https://christian-gmeiner.info/2007-10-28-schlaf-laptop-schlaf/</link>
      <pubDate>Sun, 28 Oct 2007 16:37:14 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-10-28-schlaf-laptop-schlaf/</guid>
      <description>&lt;p&gt;Suspend war und ist immer noch ein Knackpunkt von Linux. Doch zum Glück kann ich sagen, dass sich die Situation verbessert hat und nun ist es ohne Suspend2 Patches möglich mit einem aktuellen Kernel 2.6.23 Suspend2Ram und Supend2Disk zu verwendet. Nach einer schnellen Kernelconfig-Änderung und dem hinzufügen von &lt;em&gt;&lt;strong&gt;resume=/dev/hda2&lt;/strong&gt;&lt;/em&gt;zu den Boot-Pararmetern genügten schon um von Kernel-Seite alles bereitzustellen.&lt;/p&gt;
&lt;p&gt;Jetzt fehlt nur noch der Userspace 🙂 Unter Gentoo reicht ein  einfaches ***emerge sys-power/suspend ***und dem Supendieren steht nichts mehr im Weg. Unter KDE ist KPowersave sehr zu empfehlen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Octave 2.9 mit Gentoo</title>
      <link>https://christian-gmeiner.info/2007-10-07-octave-29-mit-gentoo/</link>
      <pubDate>Sun, 07 Oct 2007 19:12:50 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-10-07-octave-29-mit-gentoo/</guid>
      <description>&lt;p&gt;Leider ist das offizielle Portage nicht immer up2date (&lt;strong&gt;sci-mathematics/octave-2.1.73-r2&lt;/strong&gt;) und aus diesem Grund hier nun der einfachste Weg zu octave 2.9 unter Gentoo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;# emerge layman&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;# layman -a science&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;# echo “source /usr/portage/local/layman/make.conf” &amp;raquo; /etc/make.conf&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;# emerge -av octave&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These are the packages that would be merged, in order:&lt;/p&gt;
&lt;p&gt;Calculating dependencies… done!
[ebuild N ] app-admin/eselect-blas-0.1 0 kB
[ebuild N ] sci-mathematics/glpk-4.22 USE=”-doc” 1,385 kB
[ebuild N ] app-admin/eselect-lapack-0.1 0 kB
[ebuild N ] dev-tcltk/expect-5.43.0 USE=”X -doc” 514 kB
[ebuild N ] dev-util/gperf-3.0.3 845 kB
[ebuild N ] sci-libs/blas-reference-20070226 USE=”-debug -doc” 5,208 kB
[ebuild N ] dev-util/dejagnu-1.4.4-r1 USE=”-doc” 1,056 kB
[ebuild N ] virtual/blas-1.0 0 kB [1]
[ebuild N ] sci-libs/lapack-reference-3.1.1-r1 USE=”-debug -doc” 0 kB
[ebuild N ] virtual/lapack-1.0 0 kB [1]
[ebuild N ] &lt;strong&gt;sci-mathematics/octave-2.9.14&lt;/strong&gt; USE=”readline -curl -debug -doc -emacs -hdf5 -zlib” 9,185 kB [1]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wine Crosstests erstellen</title>
      <link>https://christian-gmeiner.info/2007-09-26-wine-crosstests-erstellen/</link>
      <pubDate>Wed, 26 Sep 2007 01:02:30 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-09-26-wine-crosstests-erstellen/</guid>
      <description>&lt;p&gt;Nachdem ich im Moment ein paar kleine Patches für Wine beisteuern will, möchte ich natürlich meine Änderungen auf einem Windows-System testen. Hierfür bietet Wine ein &lt;strong&gt;make crosstest&lt;/strong&gt; an. Doch damit dies unter Gentoo funktioniert, muss man folgendes ausführen:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;# emerge crossdev &amp;amp;&amp;amp; crossdev i386-mingw32&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Danach muss man nur noch &lt;strong&gt;./configure &amp;amp;&amp;amp; make crosstest&lt;/strong&gt; im Wine-Verzeichnis ausführen und man bekommt Binaries für Windows.
Happy Hacking&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chaos Computing...</title>
      <link>https://christian-gmeiner.info/2007-09-18-chaos-computing/</link>
      <pubDate>Tue, 18 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/2007-09-18-chaos-computing/</guid>
      <description>&lt;p&gt;Dies ist mein erneuter Versuchen einen Blog auf Beine zu stellen. Hier werde ich ausschließlich über mein Leben als Informatiker schreiben, über meine Arbeit als Open Source Entwickler und evt ein wenig über mein Studium.&lt;/p&gt;
&lt;p&gt;Happy Reading&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consulting</title>
      <link>https://christian-gmeiner.info/consulting/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/consulting/</guid>
      <description>&lt;p&gt;Software inevitably encounters bugs, a challenge particularly pronounced in the Free Software domain where much of the development relies on volunteers. Sometimes, even important bugs might not be addressed in time for a software release.&lt;/p&gt;
&lt;p&gt;In scenarios where crucial bugs are left unresolved, possibly due to the voluntary nature of the contributors, users often find themselves in need of a solution, even if they are willing to pay for it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://christian-gmeiner.info/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/contact/</guid>
      <description>&lt;p&gt;Follow me, @johndoe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Datenschutz­erklärung</title>
      <link>https://christian-gmeiner.info/privacypolicy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/privacypolicy/</guid>
      <description>&lt;h2 id=&#34;1-datenschutz-auf-einen-blick&#34;&gt;1. Datenschutz auf einen Blick&lt;/h2&gt;
&lt;h3 id=&#34;allgemeine-hinweise&#34;&gt;Allgemeine Hinweise&lt;/h3&gt;
&lt;p&gt;Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung.&lt;/p&gt;
&lt;h3 id=&#34;datenerfassung-auf-dieser-website&#34;&gt;Datenerfassung auf dieser Website&lt;/h3&gt;
&lt;h4 id=&#34;wer-ist-verantwortlich-für-die-datenerfassung-auf-dieser-website&#34;&gt;Wer ist verantwortlich für die Datenerfassung auf dieser Website?&lt;/h4&gt;
&lt;p&gt;Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt „Hinweis zur Verantwortlichen Stelle“ in dieser Datenschutzerklärung entnehmen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Imprint</title>
      <link>https://christian-gmeiner.info/imprint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://christian-gmeiner.info/imprint/</guid>
      <description>&lt;p&gt;Christian Gmeiner&lt;br&gt;
Sperberwerg 18&lt;br&gt;
6971 Hard&lt;br&gt;
Austria&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Tel: 
&lt;style&gt;
  #span-91be5755.cloaked-e-mail:before {
    content:attr(data-user);
    unicode-bidi:bidi-override;
    direction:rtl;
  }
&lt;/style&gt;
&amp;#32;&lt;span class=&#34;cloaked-e-mail&#34; data-user=&#34;999306108634&amp;#43;&#34; id=&#34;span-91be5755&#34;&gt;&lt;/span&gt;&amp;#32;

&lt;script id=&#34;script-91be5755&#34;&gt;
  var scriptTag = document.getElementById(&#34;script-91be5755&#34;);
  var link = document.createElement(&#34;a&#34;);
  var address = &#34;999306108634\u002b&#34;.split(&#39;&#39;).reverse().join(&#39;&#39;);
  link.href = &#34;tel&#34; + &#34;:&#34; + address;
  link.innerText = address.split(&#39;?&#39;)[0];
  scriptTag.parentElement.insertBefore(link, scriptTag.previousElementSibling);
  scriptTag.parentElement.removeChild(scriptTag.previousElementSibling)
&lt;/script&gt;

&lt;br&gt;
E-Mail: 
&lt;style&gt;
  #span-6d513ed3.cloaked-e-mail:before {
    content:attr(data-domain) &#34;\0040&#34; attr(data-user);
    unicode-bidi:bidi-override;
    direction:rtl;
  }
&lt;/style&gt;
&amp;#32;&lt;span class=&#34;cloaked-e-mail&#34; data-user=&#34;eciffo&#34; data-domain=&#34;ofni.reniemg-naitsirhc&#34; id=&#34;span-6d513ed3&#34;&gt;&lt;/span&gt;&amp;#32;

&lt;script id=&#34;script-6d513ed3&#34;&gt;
  var scriptTag = document.getElementById(&#34;script-6d513ed3&#34;);
  var link = document.createElement(&#34;a&#34;);
  var address = &#34;eciffo&#34;.split(&#39;&#39;).reverse().join(&#39;&#39;) + &#34;@&#34; + &#34;ofni.reniemg-naitsirhc&#34;.split(&#39;&#39;).reverse().join(&#39;&#39;);
  link.href = &#34;mailto&#34; + &#34;:&#34; + address;
  link.innerText = address.split(&#39;?&#39;)[0];
  scriptTag.parentElement.insertBefore(link, scriptTag.previousElementSibling);
  scriptTag.parentElement.removeChild(scriptTag.previousElementSibling)
&lt;/script&gt;

&lt;br&gt;
Internet: &lt;a href=&#34;https://www.christian-gmeiner.info&#34;&gt;www.christian-gmeiner.info&lt;/a&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
