v3.0 Beta

The preview of v3.0 (updated earlier today) showed off the features that I was working on, and later today (after work) I will share my latest work (DONE).

Please note that this commit will not be the official v3.0 release, but a Beta version for people who want to help me get v3.0 released (earlier). It will however include this sub menu:

What I did was that I renamed Change the connector type to Change port layout/configuration and added a new sub-menu, which will only show the port specific data. Well. That and the new menu of course.

Editable Data

One other big improvement is that the frame buffer data is saved in editable data files (example: Azul-0x0d220003.dat) instead of one long string, so that you can open them in nano for a quick free form edit. One major drawback is that the files are now incompatible with older versions, and thus you must remove/move the old data files/to a new directory!


1.) The cursor byte feature isn’t working for AppleIntelFramebufferCapri.kext
2.) Capri support is untested and most likely broken (will be fixed a.s.a.p)


I may have missed bugs/issues so I’d like to ask people here to provide feedback via Github issues. Use “v3.0B” in the title to prevent confusion with future updates. Thanks!

19 thoughts on “ v3.0 Beta

  1. Well, pipe attribute certainly has a lot of my attention, and port nibble has the rest. Can you elaborate on these values?

    I can certainly give Capri a run if these have a chance to get my pipe work sorted 😉

  2. Pike, how can i get Back after changing connector type, in order to edit Azul? It seems I can’t really get out of the second step. Am I missing something?

    • Almost forgot: Typing Back gives me “Invalid choice, Retrying…”

      / v3.0 Copyright (c) 2012-2014 by Pike R. Alpha
      AAPL,ig-platform-id: 0x0d220003 (Haswell CRW GT3) found @ 0x64d80/413056
      Source file: /System/Library/Extensions/AppleIntelFramebufferAzul.kext/Contents/MacOS/AppleIntelFramebufferAzul
      00064da8: 0105 0900 0002 0000 0600 0000 (port 5, DVI connector)
      00064db4: 0204 0a00 0008 0000 0600 0000 (port 6, HDMI connector)
      00064dc0: 0306 0800 0004 0000 1100 0000 (port 7, DisplayPort connector)
      00064dcc: ff00 0000 0100 0000 4000 0000 (port unused, VGA connector)

      What would you like to do next?

      [ 1 ] Change the frame buffer index
      [ 2 ] Change the port nibble
      [ 3 ] Change the pipe attribute
      [ 4 ] Change the connector type
      [ 5 ] Change the connector attribute

      Please choose the action to perform (Back/1-5) ?

      • Don’t use “Back” but “b” or “B”.


        This issue should now be fixed – script accepts: b, B back and Back. Same kind of treatment for Yes, No, Cancel and Exit 😉

  3. show
    produces the following output. A few weeks ago it produced more reasonable output: each line contained a valid ig-platfrom-id. I don’t know the reason for this change. Do you have any idea what’s going wrong?

    Just some thoughts from my side: some possible reasons:
    – 10.10.3. update
    – Clover patch circumvent the garbled screen during booting
    IOGraphicsFamiliy Find HEX 4188C4EB11 Replace Hex 4188C4EB31
    – a corrupted AppleIntelFramebufferAzul.kext v3.0 Copyright (c) 2012-2015 by Pike R. Alpha
    ./ line 1493: [[: 0x=: attempted assignment to non-variable (error token is “=”)
    The supported platformIDs are:

    [ 1] : 0x0c060000 – Haswell SDV Mobile GT1
    [ 2] : 0x00f00000 –
    [ 3] : 0x00000000 –
    [ 4] : 0x00000030 –
    [ 5] : 0x00090402 –
    [ 6] : 0x00000001 –
    [ 7] : 0x00000004 –
    [ 8] : 0x0a260000 – Haswell ULT Mobile GT3
    [ 9] : 0x00500000 –
    [10] : 0x00000000 –
    [11] : 0x00000030 –
    [12] : 0x000a0402 –
    [13] : 0x00000800 –
    [14] : 0x00000004 –
    [15] : 0x0a26000a – Haswell ULT Mobile GT3
    [16] : 0x02200000 –
    [17] : 0x00000000 –
    [18] : 0x00000040 –
    [19] : 0x000000ff –
    [20] : 0x00000001 –
    [21] : 0x00000000 –

  4. Hi pikeralpha,

    I have a 4010U processor with HD4400 graphics chip (8086:0a16).
    I can get this chip to work on 10.9 and on 10.10 too (QE/CI), but the LVDS port is only configured with 16bit color depth.

    I tried all azul’s ig-platform-id, and I got same problem with all, except the Desktop one.
    With 0x0d220003 ig-platform-id and enabled EDID, I can get the port to work in 32bit color mode, but I must plug in, and plug out my external VGA monitor after the laptop booted up.

    If I change frame buffer port nibble from 5 to 0 in 0x0d220003, my screen recognised on boot, but it has a same 16bit color problem.

    Do you have an idea, how can I solve this problem?

    Thx for your response,

  5. I realise this may be OT, but wondered if you might consider giving me a hand…..

    I have a Gigabyte Brix i3 4010 based with in built (edp connected) projector and have been trying like mad the last weeks to get the graphics working, but it is not a usual problem I have seen.

    The unit is HD4400 and I have been using the FakePCIID method (tried other one too but this is easier) and a device injection of 0x04128086 on Yosemite 10.10.5.

    I have gone through pretty much every combination on the .sh script for most frame buffers, but while the PC boots up fully it goes to invisible desktop that I can access via screen sharing or via display link connection.

    In each case the azul and HD5000 kexts are loading, and system info changes when I make changes to ram etc and the frame buffer number is changing correctly but not actual output to any of the three connections (HDMI/DP and the eDP projector).

    I think the issue may be down to the display pipe selection as Intel reg Dumper tells me that the connections are via Pipe B (enabled) whereas in OS X your AppleIntelInfo kext shows it to be trying pipe A.

    I can of course upload dumps/ioreg etc. if you would be willing to take a look, but I cannot see how to force OS X to use Pipe B [or indeed I don’t know if that would be the solution….].

    Anyway, I realise you must get cries for help like this all the time and are very busy so I am quite prepared for this post not to be seen/ replied to- but if you could help I’d be supremely grateful – and also more than happy to give a free assist if you should ever need some laser cutting done!! 🙂

    • I think that this is the same issue what I had with the Haswell pre-launch. May even have files for it, but I won’t be back home until 2016. Sorry. Oh and did you run the Intel reg Dumper on Linux? Does it work with Windows/Linux?

      • I was never able to get it resolved 😦

        kinda weird to see someone else with the same issue as until now it was just me. Mine is Capri buffer but same issue.

        I never did understand the thing about refresh rates you said, I just guessed the joke was on me and I should drop it 😉

  6. Hi pikeralpha,

    did you ever figure out what “port nibbles”, “pipe attributes” and “connector attributes” do? I read all your blog-posts about this but I’ve seen that you did not name “pipe attributes” “delay” or something similar as one would probably think after reading AppleIntelFramebufferAzul.kext (part II).

    I’d really like to understand what these three values represent and / or where I could find more details on this topic…

    Anyway, I guess you are pretty much somewhere else with your thoughts right now but let me know if you can.


    • The port nibble part is easy. AppleIntelFramebuffer::SetPortNumberProperty() sets the “port-number” property. It does that by adding four to 1 (port-number = 5), 2 (port-number = 6) and 3 (port-number = 7). For zero and all other values port-number is set to 0.

      The “pipe attribute” is most likely related to routing. Think: display pipe (A/B/C) -> panel fitter -> transcoder (A/B/C) -> port MUX -> DDI port (A/B/C). I may be wrong, but I wouldn’t know what else it could be used for. Exact values still unknown.

      The “connector attribute” is actually used for the display pipe capabilities. For example. In the latest AppleIntelSKLGraphicsFramebuffer.kext binary you can find 0x2000 for disabled ports/pipes. Each type of port/pipe has its own capabilities, but the problem is that Apple isn’t sharing anything, and thus we have to resort to a lot of educated guesswork.

      Note: Previously I though about a delay and/or priority, but that was at a time I knew even less than I do now.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s