Add support for 20" display with aluminum frame

Issue #15 resolved
Jens Holst Schumacher repo owner created an issue

Add support for 20" display

I need two things.

I need some more information about the displays HID device. To get it open brightness controller and select: "Help -> Gather HID Information". and post the information here.

I also need to know what version of the 20" display it is. The [[http://www.everymac.com/monitors/apple/studio_cinema/specs/apple_cinema_display_20.html| 2003 with acrylic frame ]] or the [[http://www.everymac.com/monitors/apple/studio_cinema/specs/apple_cinema_display_20_2.html|2004 with aluminum frame]].

Comments (18)

  1. Dmitry

    My ACD is 2004 with aluminium frame. I use it on a PC, not Mac.

    I used windows xp before - a tool acdmon to control brightness with keyboard. In Windows 7 this tool doesn't install.

    Here's a HID information:

    <?xml version="1.0" encoding="utf-16"?>
    <ArrayOfHidDeviceInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <HidDeviceInfo>
        <Path>\\?\hid#vid_05ac&amp;pid_9222#8&amp;1fd6fcf4&amp;0&amp;0000#{4d1e55b2-f16f-11cf-88cb-001111000030}</Path>
        <ProductString>Apple Cinema Display</ProductString>
        <ManufacturerString>Apple Computer, Inc.</ManufacturerString>
        <HidAttributes>
          <Size>12</Size>
          <VendorID>1452</VendorID>
          <ProductID>37410</ProductID>
          <VersionNumber>276</VersionNumber>
        </HidAttributes>
        <HidCaps>
          <Usage>1</Usage>
          <UsagePage>128</UsagePage>
          <InputReportByteLength>2</InputReportByteLength>
          <OutputReportByteLength>0</OutputReportByteLength>
          <FeatureReportByteLength>257</FeatureReportByteLength>
          <Reserved>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
            <unsignedShort>0</unsignedShort>
          </Reserved>
          <NumberLinkCollectionNodes>1</NumberLinkCollectionNodes>
          <NumberInputButtonCaps>0</NumberInputButtonCaps>
          <NumberInputValueCaps>1</NumberInputValueCaps>
          <NumberInputDataIndices>1</NumberInputDataIndices>
          <NumberOutputButtonCaps>0</NumberOutputButtonCaps>
          <NumberOutputValueCaps>0</NumberOutputValueCaps>
          <NumberOutputDataIndices>0</NumberOutputDataIndices>
          <NumberFeatureButtonCaps>0</NumberFeatureButtonCaps>
          <NumberFeatureValueCaps>7</NumberFeatureValueCaps>
          <NumberFeatureDataIndices>7</NumberFeatureDataIndices>
        </HidCaps>
        <FeatureValueCaps>
          <HidValueCaps>
            <UsagePage>128</UsagePage>
            <ReportID>2</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>258</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>256</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>255</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>2</UsageMin>
            <UsageMax>2</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>0</DataIndexMin>
            <DataIndexMax>0</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>16</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>255</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>16</UsageMin>
            <UsageMax>16</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>1</DataIndexMin>
            <DataIndexMax>1</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>227</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>255</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>227</UsageMin>
            <UsageMax>227</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>2</DataIndexMin>
            <DataIndexMax>2</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>225</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>1</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>225</UsageMin>
            <UsageMax>225</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>3</DataIndexMin>
            <DataIndexMax>3</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>232</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>1</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>232</UsageMin>
            <UsageMax>232</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>4</DataIndexMin>
            <DataIndexMax>4</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>214</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>4</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>214</UsageMin>
            <UsageMax>214</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>5</DataIndexMin>
            <DataIndexMax>5</DataIndexMax>
          </HidValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>231</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>7</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>231</UsageMin>
            <UsageMax>231</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>6</DataIndexMin>
            <DataIndexMax>6</DataIndexMax>
          </HidValueCaps>
        </FeatureValueCaps>
        <InputValueCaps>
          <HidValueCaps>
            <UsagePage>130</UsagePage>
            <ReportID>228</ReportID>
            <IsAlias>false</IsAlias>
            <BitField>2</BitField>
            <LinkCollection>0</LinkCollection>
            <LinkUsage>1</LinkUsage>
            <LinkUsagePage>128</LinkUsagePage>
            <IsRange>false</IsRange>
            <IsStringRange>false</IsStringRange>
            <IsDesignatorRange>false</IsDesignatorRange>
            <IsAbsolute>true</IsAbsolute>
            <HasNull>false</HasNull>
            <Reserved>0</Reserved>
            <BitSize>8</BitSize>
            <ReportCount>1</ReportCount>
            <Reserved2>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
              <unsignedShort>0</unsignedShort>
            </Reserved2>
            <UnitsExp>0</UnitsExp>
            <Units>0</Units>
            <LogicalMin>0</LogicalMin>
            <LogicalMax>255</LogicalMax>
            <PhysicalMin>0</PhysicalMin>
            <PhysicalMax>0</PhysicalMax>
            <UsageMin>228</UsageMin>
            <UsageMax>228</UsageMax>
            <StringMin>0</StringMin>
            <StringMax>0</StringMax>
            <DesignatorMin>0</DesignatorMin>
            <DesignatorMax>0</DesignatorMax>
            <DataIndexMin>0</DataIndexMin>
            <DataIndexMax>0</DataIndexMax>
          </HidValueCaps>
        </InputValueCaps>
      </HidDeviceInfo>
    </ArrayOfHidDeviceInfo>
    
  2. Jens Holst Schumacher reporter

    Bah... apple hackers... Another display with a ton of ReportID's with no documentation hehe.

    Anyway

    <UsagePage>130</UsagePage> (VESA Virtual Controls)
    <ReportID>16</ReportID> (Brightness)
    

    is there. So no worries i can fix brightness control easy. But i don't see any support for auto brightness in your model (so far it's only the 27" models)

    I will have something ready some time this weekend.

  3. Jens Holst Schumacher reporter

    bootcamp drivers make no diff... as long as you don't try to use the bootcamp control panel at the same time as brightness controller.

  4. Log in to comment