Tuesday, April 25, 2017

The defrost timer was the problem

Well, crossing my fingers didn't work: the fridge iced up again so obviously more diagnosis was in order.

I figured out that there is an access to the defrost timer on the underside of the module that is attached to the ceiling of the refrigerator compartment. This allows you to manually turn the defrost timer without removing the whole module.

After turning it enough that I could hear a click, the fridge promptly would go into a defrost cycle.

The kill-a-watt told me that the defrost element uses around 460 watts, compared to 160 watts for running the compressor. The defrost cycle takes about .14 KWH (460 watts for 0.3 hour)

Also, when it is in defrost cycle, the compressor is disconnected, so you definitely know that it has switched over.

After 20 minutes the defrost thermostat shuts off, and power consumption goes to about 1 watt.

But the compressor never comes back online... after 20 minutes which is the normal cycle time, the timer is supposed to "click" and turn the compressor back on and shut the defrost element off.

Since the element heats up (if you put your hand in the back of the freezer compartment, you can feel the heat), and it's using 460 watts, we know the defrost element is good.

Since the element shuts off after 20 minutes, we know the defrost thermostat is working.

Therefore, the timer must be bad.

After searching ebay, I found a timer that matched specs (1/2 hp, 12 hour) and looked identical except for the model number, made by the same manufacturer.

In the week while waiting for delivery, I would activate the defrost cycle manually for 20 minutes once a day. (It's interesting that the element would run for just about exactly 20 minutes). I put a mirror up so I could see the little grey thing to turn. It's kinda tricky to get a screwdriver on it.

I just swapped the defrost timer and things seem to be working. Now when I open the fridge and put my head nearby and listen, I can hear the timer motor grinding slowly. Before, I heard no timer motor noise. (edit: I think the timer motor only runs when the compressor runs, so it's quiet when the compressor is shut off. I only heard the timer motor running while the defrost cycle was active.) So that explains why after exactly 12 hours the defrost cycle didn't initiate, it's 12 hours of compressor run time).

It was super easy to swap it out because it was identical in virtually every way, though the case on this one was opaque versus clear plastic.


It's pretty useful to have the kill-a-watt, if this fridge using more KWH than normal, around 1.5 KWH per day, you definitely know something's wrong.

Maybe I'll put some pictures up tomorrow when I feel more industrious.

Friday, April 21, 2017

So where does the PNP ID come from in the EDID?

Looking at the EDID, where is the manufacturer code and the monitor ID?

The wikipedia EDID article tells us that bytes 8-9 are the Manufacturer ID and bytes 10-11 are the product code.

8–9 Manufacturer ID.

These IDs are assigned by Microsoft, they are PNP IDs "00001=A”; “00010=B”; ... “11010=Z”. Bit 7 (at address 08h) is 0, the first character (letter) is located at bits 6 → 2 (at address 08h), the second character (letter) is located at bits 1 & 0 (at address 08h) and bits 7 → 5 (at address 09h), and the third character (letter) is located at bits 4 → 0 (at address 09h).
Bit 15 (Reserved, always 0)
Bits 14–10 First letter of manufacturer ID (byte 8, bits 6–2)
Bits 9–5 Second letter of manufacturer ID (byte 8, bit 1 through byte 9 bit 5)
Bits 4–0 Third letter of manufacturer ID (byte 9 bits 4–0)

10–11 Manufacturer product code. 16-bit number, little-endian.


So let's make a little LibreCalc spreadsheet and a function to get the bits:



function bits(value, lowbit, highbit as double)as double
  retval = 0
  for i = lowbit to highbit
    retval = retval + (value and (2^i))
  next i
  retval = retval / (2^lowbit)
  bits = retval  
end function


then a table from a1:31 with the numbers 1 to 31
a table from b1:31 with the formula =CHAR(A1+UNICODE("A")-1) in b1 and fill copy it to b31. I'm so used to using the ASC function but now I guess it has to be UNICODE.

and to see the bit patterns, why not fill c1:c31 with =DEC2BIN(A1,5) to pad it to 5 binary digits.

then to translate a 5 bit letter code to a letter, we go:

=LOOKUP(lettercodenumber,A1:A31,B1:B31)

and to get the bits for a specific range let's use the bits routine:

=bits(number,14,10) for bits 10 to 14



Let's use cell f4 for our : 10ac

put a =HEX2DEC(f4) into g4

and the following into cell h4

=LOOKUP(BITS(G4,10,14),$A$1:$A$31,$B$1:$B$31)&
LOOKUP(BITS(G4,5,9),$A$1:$A$31,$B$1:$B$31)&
LOOKUP(BITS(G4,0,4),$A$1:$A$31,$B$1:$B$31)

And now you can convert that hex code to a manufacturer ID.

The product code is easy, just reverse the little endian:

So if your hexdump looks like this:

00000000 00 ff ff ff ff ff ff 00 10 ac 15 a0 35 34 38 36 |................|

10ac = DEL
15a0 = A015

for the PNP code of DELA015


And if you want to get rid of the lookup table, you can just compute it with another function:


function pnpletter(code) as string  
  pnpletter=chr$(code+ASC("A")-1)
end function

which makes our cell h4 formula

=PNPLETTER(BITS(G4,10,14))&PNPLETTER(BITS(G4,5,9))&PNPLETTER(BITS(G4,0,4))



It would have been neat to have it "human readable" without bit fiddling but I guess they wanted to save a byte here and there.

Thursday, April 20, 2017

Sceptre X9 19" monitor hates DDC/CI

So I thought I see if a Sceptre X9 KOMODO 19" monitor from 2005 would work with DDC/CI.
It really hates it.

Running "sudo get-edid | parse-edid" before trying ddccontrol looks good:

sudo get-edid -b 1 | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 1 as per your request.
256-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
Identifier "KOMODO V"
ModelName "KOMODO V"
VendorName "SPT"
# Monitor Manufactured week 22 of 2005
# EDID version 1.3
# Analog Display
Option "SyncOnGreen" "true"
DisplaySize 380 300
Gamma 2.20
Option "DPMS" "true"
Horizsync 24-80
VertRefresh 50-75
# Maximum pixel clock is 140MHz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1280x960, 60Hz
#Not giving standard mode: 1152x864, 75Hz
#Not giving standard mode: 1024x768, 66Hz
Modeline "Mode 0" 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
EndSection

and looking at it with hexdump

sudo get-edid -b 1 | hexdump -C 
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 1 as per your request.
256-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
00000000  00 ff ff ff ff ff ff 00  4e 14 2a 19 af 0a 00 00  |........N.*.....|
00000010  16 0f 01 03 6f 26 1e 78  ea 68 75 a2 5a 49 9f 23  |....o&.x.hu.ZI.#|
00000020  13 50 54 bf ef 80 81 80  81 40 71 4f 61 46 01 01  |.PT......@qOaF..|
00000030  01 01 01 01 01 01 30 2a  00 98 51 00 2a 40 30 70  |......0*..Q.*@0p|
00000040  13 00 78 2d 11 00 00 1e  00 00 00 fd 00 32 4b 18  |..x-.........2K.|
00000050  50 0e 00 0a 20 20 20 20  20 20 00 00 00 fc 00 53  |P...      .....S|
00000060  63 65 70 74 72 65 20 58  39 47 2d 0a 00 00 00 fc  |ceptre X9G-.....|
00000070  00 4b 4f 4d 4f 44 4f 20  56 0a 20 20 20 20 00 bc  |.KOMODO V.    ..|
00000080  64 00 72 10 d8 da b9 51  73 5e 10 b9 82 90 23 59  |d.r....Qs^....#Y|
00000090  3e 94 48 fc 06 73 9e 34  20 64 8e 00 20 54 0a 96  |>.H..s.4 d.. T..|
000000a0  91 15 04 11 8a 18 c9 01  26 14 81 e3 86 c1 71 18  |........&.....q.|
000000b0  19 21 54 a1 d9 69 9d 20  34 32 d2 87 b8 39 17 18  |.!T..i. 42...9..|
000000c0  9c 1a 8e 07 18 80 25 34  a1 a0 21 d0 42 93 a5 66  |......%4..!.B..f|
000000d0  90 2a 02 00 ec 48 44 b9  74 e6 98 40 61 40 26 3a  |.*...HD.t..@a@&:|
000000e0  20 b6 84 8c 2a cc 06 10  68 05 44 20 40 46 09 81  | ...*...h.D @F..|
000000f0  9b f4 ab 5b 28 2c 2d 03  90 b6 36 5a 83 c8 84 93  |...[(,-...6Z....|
00000100

then if I run

sudo ddccontrol -c dev:/dev/i2c-1

I get this:


sudo ddccontrol dev:/dev/i2c-1
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...
ioctl(): No such device or address
ioctl returned -1
Reading EDID 0x50 failed.

DDC/CI at dev:/dev/i2c-1 is unusable (-2).
If your graphics card need it, please check all the required kernel modules are loaded (i2c-dev, and your framebuffer driver).


and now the monitor won't respond to any get-edid requests:

sudo get-edid -b 1 | hexdump -C 
1
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Only trying 1 as per your request.
Bus 1 doesn't really have an EDID...
Couldn't find an accessible EDID on this bus.
Attempting to use the classical VBE interface

Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful

VBE version 300
VBE string at 0x11100 "Intel(R) Sandybridge/Ivybridge Graphics Chipset Accelerated VGA BIOS"

VBE/DDC service about to be called
Report DDC capabilities

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful

Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
Read EDID

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call failed

The EDID data should not be trusted as the VBE call failed
Looks like VBE was successful. Have a good day.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080


and if I want to have the EDID working again, I must unplug and plug in the monitor to reset it. Just pressing the power button on the monitor isn't enough since I guess it still has standby power.

Making a ddccontrol-db file for Sun 24.1 v4 LCD


gddccontrol seems to run better with a ddccontrol-db file for a monitor. Otherwise it will give you a dialog saying it's trying to use a generic profile.

so we run

sudo ddccontrol -c -p

and copy and paste that into our SUN059A.xml file that we've created.

It seems to be happier when it has the vcp completely enclosed in parentheses like so: (vcp(...))
Otherwise it gives you a little error message on the console like "error in caps add".



<!--xml version="1.0"?-->
<monitor name="SUN 24.1 V4 (VGA)" init="standard">
        <caps add="(vcp(02 04 05 06 08 0B 0C 0E 10 12 14(01 05 08 0B) 16 18 1A 1E 1F 20 30 3E 52 60(01 03) 6C 6E 70 AC AE B2 B6 C6 C8 C9 CC(00 02 03 04 05 10) D6(01 04) DF))"/> 
        <include file="VESA"/>
</monitor>




Another thing that's kind of neat is that you can drag the gddccontrol window to the other monitor (if you're doing the dual monitor thing) and it will choose the "other monitor."

So if you've made a file in /usr/share/ddccontrol-db/monitors you won't have to click on OK every time you choose that monitor (either from the dropdown menu or by dragging the gddccontrol window to the other monitor).

Wednesday, April 19, 2017

Making My Dell E193FP work with gddccontrol

So I have a Dell E193FP which supports DDC/CI. But gddccontrol doesn't have a monitor description file for it.

Looking at a sample file in /usr/share/ddccontrol-db/monitors, it looks pretty simple.

Here's the file for DELA010.xml



<!--xml version="1.0"?-->
<monitor name="Dell 2405FPW (DVI)" init="standard">
        <!--- vcp(page0(04 05 06 08 0E 10 12 14(01 04 05 08) 16 18 1A 1E 20 30 3E 60)) -->
        <controls>
                <control id="colorpreset" address="0x14">
                        <value id="warm"  value="0x04"/>
                        <value id="srgb"  value="0x05"/>
                        <value id="cool"  value="0x08"/>
                </control>

        </controls>
        <include file="VESA"/>
</monitor>




so it looks like the file is fairly straightforward.

For my E193FP I ran ddccontrol -c -d -p and it gave me the vcp capabilities string, and I made a file with the name of the monitor PNP code with the suffix .xml for DEL700E.xml.

sudo ddccontrol -c -d dev:/dev/i2c-1
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...

EDID readings:
Plug and Play ID: DEL700E [Dell Dell E193FP (VGA)]
Input type: Analog

Capabilities:
Raw output: type(LCD)vcp(04 06 08 0E 10 12 14(05 08 0b 0c) 16 18 1A 1E 20 30 3E 62 68(00 01 02 03 04) 38 39)
Parsed output:
VCP: 04 06 08 0e 10 12 14 16 18 1a 1e 20 30 38 39 3e 62 68
Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x04: +/0/65535 C [Restore Factory Defaults]
Control 0x06: +/0/65535 C [Restore Factory Default Geometry]
Control 0x08: +/0/65535 C [Restore Factory Default Color]
Control 0x0e: +/50/100 C [Image Lock Coarse (Clock)]
Control 0x10: +/100/100 C [Brightness]
Control 0x12: +/75/100 C [Contrast]
Control 0x14: +/11/13 C [???]
Control 0x16: +/255/255 C [Red maximum level]
Control 0x18: +/255/255 C [Green maximum level]
Control 0x1a: +/255/255 C [Blue maximum level]
Control 0x1e: +/0/65535 C [Automatically adjust]
Control 0x20: +/50/100 C [Horizontal Position]
Control 0x30: +/32/64 C [Vertical Position]
Control 0x3e: +/52/63 C [Image Lock Fine (Clock Phase)]
Control 0x68: +/0/65535 C [???]
Control 0x9b: +/255/255 [???]
Control 0x9d: +/255/255 [???]
Control 0x9f: +/255/255 [???]


I took the vcp string and copied and pasted it into my DEL700E.xml like so, along with an include line to include the VESA.xml file as well.




<!--xml version="1.0"?-->
<monitor name="Dell Dell E193FP (VGA)" init="standard">
 <caps add="(vcp(04 06 08 0E 10 12 14(05 08 0b 0c) 16 18 1A 1E 20 30 3E 62 68(00 01 02 03 04) 38 39))"/> 
        <include file="VESA"/>
</monitor>



and copying it to the /usr/share/ddccontrol-db/monitor directory:

sudo cp -v DEL700E.xml /usr/share/ddccontrol-db/monitor/

and now gddccontrol doesn't give me a "zero" tab anymore, and I can change brightness and contrast.

Yay!

Saturday, April 15, 2017

Fiddling with the fridge

So the fridge was acting up, and we thought we'd have a look at it.


Surprisingly, it was pretty low tech inside. I was expecting to find a circuit board with a microprocessor.

Nope! Just a thermostat switch, a defrost timer and wire harnesses hooking them up.

The design is rather simple: The coils in the freezer have a fan that blows air around and a vent connects the refrigerator part, dropping cold air into the fridge.

The defrost timer is pretty basic, just a 12 hour timer. It's not unlike the timers that plug into a light socket that will turn your lights on and off in a set pattern.


The company was kind enough to include a paper schematic tucked inside the module in the top of the fridge that has the thermostat and the defrost timer. I guess that is the "service manual."






Taking the cover panel off in the freezer revealed the coil/radiator all iced up.

The control that determines the coldness of the freezer is just like a pivoting fireplace damper.

Less cold = more airflow to the fridge, coldest = more airflow to the freezer.


Someone (who will go nameless and blameless) stacked up some stuff that blocked the air vents that come down from the freezer. Maybe that caused it to ice up the coils in the freezer. The thermostat switch lives down in the refrigerator part, so if it isn't getting cold air it just runs and runs and the ice builds up. Once the ice builds up, air doesn't flow freely over the radiator, the thermostat doesn't shut off, and it keeps going in a positive feedback loop.

Since the fridge wasn't getting cold, turning the damper control in the freezer to "Coldest" or the thermostat in the fridge to "Colder" just made it worse, since the ice just kept building.


I'm not sure that we actually fixed anything, but after defrosting and reassembling it's working fine now. Fingers crossed.

Wednesday, April 12, 2017

Got Hoopladigital working on Firefox 52 and Ubuntu 16.04

Yay! I've been able to get hoopla digital working on Firefox 52 and Ubuntu 16.04.

Now Firefox has the DRM stuff which you have to enable at about:preferences#content by checking the Enable DRM box. I thought that was it, but I had to do a little more.


The secret? I don't know exactly what was missing, but I think it was the H.264 codec.

http://askubuntu.com/questions/389437/how-do-i-get-html5-h-264-video-working-on-firefox

and going to the youtube HTML5 video checker told me that h.264 was not present (that's why some youtube videos won't play for me):

https://www.youtube.com/html5

So running

sudo apt-get install ubuntu-restricted-extras

gets everything sorted, (and you need to restart firefox) and presto! Hoopla works!

I have struggled mightily and gotten quite discouraged but I'm happy now.

Fixing HDMI overscan at 1920x1080 on a Seiki 22" TV SE22HY01

So I thought I'd try to see if ddc/ci would work on a seiki 22" TV SE22HY01 but it doesn't support DDC/CI. *sniff*

But I encountered another problem: on the HDMI input, I would get overscanned video so the edges of the ubuntu screen were chopped off.

On this webpage, there was a tip that you could pass xrandr a transformation matrix to resize the screen.


https://newagesoldier.com/linux-hdmi-resize-screen-overscan-fix-ubuntu/



xrandr --output HDMI1 --transform 1.05,0,-35,0,1.05,-19,0,0,1

and I tried that but it seemed to do bilinear filtering, and bilinear filtering of text is absolutely terrible.

So I tried to do a custom resolution with xrandr: (note that I asked for 1900 pixels wide but it rounded it to 1904)

cvt 1900 900
xrandr --newmode "1904x900_60.00" 140.50 1904 2016 2208 2512 900 903 913 934 -hsync +vsync
xrandr --addmode HDMI1 "1904x900_60.00"

and then going to the ubuntu control panel and selecting my new custom resolution and voila! I can see the edges of the screen properly.

if I run xrandr you can see my custom resolution there:

xrandr
Screen 0: minimum 8 x 8, current 1904 x 900, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected primary 1904x900+0+0 (normal left inverted right x axis y axis) 476mm x 268mm
1920x1080 60.00 + 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1920x1080i 60.00 60.00 50.00 59.94
1904x900 59.88*
1280x1024 60.02
1280x720 60.61 60.00 50.00 59.94
1024x768 75.08 70.07 60.00
800x600 72.19 75.00 60.32
720x576 50.00
720x576i 50.00
720x480 60.00 59.94
720x480i 60.00 59.94
640x480 75.00 72.81 60.00 59.94
720x400 70.08
1904x900_60.00 59.88
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

I could probably try to fiddle with the resolution a bit to get it bigger but this worked the first time so I'm happy enough.



sudo get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface

Section "Monitor"
Identifier "SE22HY01"
ModelName "SE22HY01"
VendorName "SEK"
# Monitor Manufactured week 50 of 2012
# EDID version 1.3
# Digital Display
DisplaySize 480 270
Gamma 2.20
Option "DPMS" "false"
Horizsync 30-80
VertRefresh 47-63
...
EndSection


=======================


Hmmm. I think I can get a little better resolution that's the same aspect ratio, let's try 98 percent:

so from a bash command prompt let's do a little math with the double parenthesis thing:

echo $((1920*98))
188160
echo $((1080*98))
105840

so multiplying by 98 gives me the percent multiply if I drop the last two digits of the result: 1882x1058

cvt 1882 1058
xrandr --newmode "1888x1058_60.00" 166.25 1888 2008 2208 2528 1058 1061 1071 1098 -hsync +vsync
xrandr --addmode HDMI1 "1888x1058_60.00"


It seems if I choose 1920x1080 the TV wants to do overscan, but any other resolution it will fill the screen as I would expect.

Hmmmm. so why not try just a little different resolution that's close to 1920x1080 like say 1910x1080

cvt 1910 1080
xrandr --newmode "1912x1080_60.00" 171.25 1912 2032 2232 2552 1080 1083 1093 1120 -hsync +vsync
xrandr --addmode HDMI1 "1912x1080_60.00"

and yes, no pesky overscan and practically full HD resolution, minus 8 pixels.

Hmmmmm. why not try full horiz resolution but take away one horizontal line for 1920x1079.

cvt 1920 1079
xrandr --newmode "1920x1079_60.00" 172.75 1920 2048 2248 2576 1079 1082 1092 1119 -hsync +vsync
xrandr --addmode HDMI1 "1920x1079_60.00"

Beauty. No overscan and I only lose one line of resolution.

I still can't understand why you would want overscan when you have a perfect 1920x1080 signal that would fill the screen.

If I pump a 1920x1080 signal into the VGA input of the TV it displays without overscan, so why would it do that on the HDMI?


The other annoying thing is that it won't go into a power save mode on the HDMI input. Instead of doing the energy star power save, it displays the message "Not Support".

If I want to put it into power save, I have to put the computer into standby and after a bit it will turn itself off. I have to manually turn the TV back on after the computer has resumed from standby.

Sunday, April 9, 2017

gddcontrol and older dell e176fp, e196 and 1901FP, 1905FP

from my experiments, ddccontrol doesn't like the dell e176FP, e177FP, e196 giving lots of ???? marks.

When I ask it for properties, it seems to have lots of ??? marks in the list, and if it has ??? marks, gddccontrol won't work, giving you the "zero" tab with no controls.

It'd be cool if gddccontrol would let you try to send the codes for brightness and contrast even if it can't read all the capabilities. I only really care about brightness and contrast anyway.



sudo ddccontrol -c -d dev:/dev/i2c-1
EDID readings:
 Plug and Play ID: DELA014 [VESA standard monitor]
 Input type: Analog

Capabilities:
Raw output: type(LCD)vcp(page0(02 04 05 06 08 0E 10 12 14(01 03 04 05 06 08) 16 18 1A 1E 20 30 3E 60 62 68(1) 8A 8C 9B 9C 9D 9E 9F A0 AC AE B6 C0 C6 C8 C9 CA D6(01 02 03 04) DF FA FB FC FD) page2(37 38 39))asset_eep(40)mccs_ver(2.0)
Parsed output: 
 VCP: 
 Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/512/65535   [???]
Control 0x04: +/0/65535   [???]
Control 0x05: +/0/65535   [???]
Control 0x06: +/0/65535   [???]
Control 0x08: +/0/65535   [???]
Control 0x0e: +/50/100   [???]
Control 0x10: +/255/255   [???]
Control 0x12: +/50/170   [???]
Control 0x14: +/1280/65535   [???]
Control 0x16: +/255/255   [???]
Control 0x18: +/255/255   [???]
Control 0x1a: +/255/255   [???]
Control 0x1e: +/0/65535   [???]
Control 0x20: +/50/100   [???]
Control 0x30: +/36/72   [???]
Control 0x3e: +/8/63   [???]
Control 0x60: +/256/65535   [???]
Control 0x68: +/256/65535   [???]
Control 0x9b: +/255/255   [???]
Control 0x9d: +/255/255   [???]
Control 0x9f: +/255/255   [???]
Control 0xac: +/32514/65535   [???]
Control 0xae: +/22274/65535   [???]
Control 0xb6: +/768/65535   [???]
Control 0xc0: +/0/65535   [???]
Control 0xc6: +/65535/65535   [???]
Control 0xc8: +/8706/65535   [???]
Control 0xc9: +/258/65535   [???]
Control 0xca: +/256/65535   [???]
Control 0xd6: +/256/65535   [???]
Control 0xdf: +/512/65535   [???]



However, the monitors will respond to manually specifying properties:


sudo ddccontrol  dev:/dev/i2c-1 -r 0x10 -w 60
sudo ddccontrol  dev:/dev/i2c-1 -r 0x12 -w 60

0x10 being brightness
0x12 being contrast

one of the interesting things is that different versions of the e176FP (like e176FPf versus e176FPm) give slightly different ranges for the 0x10 and 0x12 properties.

the e176FPf has a range to 255 for brightness, to 170 for contrast

Control 0x10: +/255/255   [???]
Control 0x12: +/50/170   [???]

the e176FPm has a range to 100 for brightness, to 169 for contrast

Control 0x10: +/50/100   [???]
Control 0x11: +/0/65535   [???]
Control 0x12: +/90/169   [???]



the 1901FP gives lots of strange errors also, however manually setting brightness/contrast works.

the 1905FP gives error messages, but it gives enough information that gddccontrol works.







cat dell_e176FPf_ddc.txt 
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...

EDID readings:
 Plug and Play ID: DELA014 [VESA standard monitor]
 Input type: Analog
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Capabilities:
Raw output: type(LCD)vcp(page0(02 04 05 06 08 0E 10 12 14(01 03 04 05 06 08) 16 18 1A 1E 20 30 3E 60 62 68(1) 8A 8C 9B 9C 9D 9E 9F A0 AC AE B6 C0 C6 C8 C9 CA D6(01 02 03 04) DF FA FB FC FD) page2(37 38 39))asset_eep(40)mccs_ver(2.0)
Parsed output: 
 VCP: 
 Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/512/65535   [???]
Control 0x04: +/0/65535   [???]
Control 0x05: +/0/65535   [???]
Control 0x06: +/0/65535   [???]
Control 0x08: +/0/65535   [???]
Control 0x0e: +/50/100   [???]
Control 0x10: +/255/255   [???]
Control 0x12: +/50/170   [???]
Control 0x14: +/1280/65535   [???]
Control 0x16: +/255/255   [???]
Control 0x18: +/255/255   [???]
Control 0x1a: +/255/255   [???]
Control 0x1e: +/0/65535   [???]
Control 0x20: +/50/100   [???]
Control 0x30: +/24/48   [???]
Control 0x3e: +/20/63   [???]
Control 0x60: +/256/65535   [???]
Control 0x68: +/256/65535   [???]
Control 0x9b: +/255/255   [???]
Control 0x9d: +/255/255   [???]
Control 0x9f: +/255/255   [???]
Control 0xac: +/57857/65535   [???]
Control 0xae: +/22018/65535   [???]
Control 0xb6: +/768/65535   [???]
Control 0xc0: +/0/65535   [???]
Control 0xc6: +/65535/65535   [???]
Control 0xc8: +/8706/65535   [???]
Control 0xc9: +/258/65535   [???]
Control 0xca: +/256/65535   [???]
Control 0xd6: +/256/65535   [???]
Control 0xdf: +/512/65535   [???]
Section "Monitor"
 Identifier "DELL E176FP"
 ModelName "DELL E176FP"
 VendorName "DEL"
 # Monitor Manufactured week 45 of 2005
 # EDID version 1.3
 # Analog Display
 DisplaySize 340 270
 Gamma 2.20
 Option "DPMS" "true"
 Horizsync 31-80
 VertRefresh 56-75
 # Maximum pixel clock is 140MHz
 #Not giving standard mode: 1152x864, 75Hz
 #Not giving standard mode: 1280x1024, 60Hz
 Modeline  "Mode 0" 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync 
EndSection




It's interesting to compare the output from different monitors, here's a comparison between an e176FPf and an e196FPb:

I made a little crap script that would run ddccontrol, get-edid, and xrandr to compare the output.
===================================
#!/bin/bash
sudo ddccontrol -c  -d  dev:/dev/i2c-1 >> $1
sudo get-edid | parse-edid >> $1 
xrandr --verbose >> $1
xrandr >> $1
===============================

diff dell_e176FPf_ddc.txt dell_e196FPb_ddc.txt 
10c10
<  Plug and Play ID: DELA014 [VESA standard monitor]
---
>  Plug and Play ID: DELA015 [VESA standard monitor]
26c26
< Raw output: type(LCD)vcp(page0(02 04 05 06 08 0E 10 12 14(01 03 04 05 06 08) 16 18 1A 1E 20 30 3E 60 62 68(1) 8A 8C 9B 9C 9D 9E 9F A0 AC AE B6 C0 C6 C8 C9 CA D6(01 02 03 04) DF FA FB FC FD) page2(37 38 39))asset_eep(40)mccs_ver(2.0)
---
> Raw output: type(LCD)vcp(page0(02 04 05 08 0E 10 12 14(01 06 08 0B) 16 18 1A 1E 20 30 3E 52 AC AE B2 B6 C0 C6 C8 C9 CA D6(01 02 03 04) DF))
32c32
< Control 0x02: +/512/65535   [???]
---
> Control 0x02: +/256/65535   [???]
38,43c38,43
< Control 0x10: +/255/255   [???]
< Control 0x12: +/50/170   [???]
< Control 0x14: +/1280/65535   [???]
< Control 0x16: +/255/255   [???]
< Control 0x18: +/255/255   [???]
< Control 0x1a: +/255/255   [???]
---
> Control 0x10: +/75/100   [???]
> Control 0x12: +/75/100   [???]
> Control 0x14: +/5/11   [???]
> Control 0x16: +/100/100   [???]
> Control 0x18: +/100/100   [???]
> Control 0x1a: +/100/100   [???]
46,47c46,47
< Control 0x30: +/24/48   [???]
< Control 0x3e: +/20/63   [???]
---
> Control 0x30: +/37/74   [???]
> Control 0x3e: +/37/63   [???]
50,54c50,54
< Control 0x9b: +/255/255   [???]
< Control 0x9d: +/255/255   [???]
< Control 0x9f: +/255/255   [???]
< Control 0xac: +/57857/65535   [???]
< Control 0xae: +/22018/65535   [???]
---
> Control 0x9b: +/100/100   [???]
> Control 0x9d: +/100/100   [???]
> Control 0x9f: +/100/100   [???]
> Control 0xac: +/32514/65535   [???]
> Control 0xae: +/22274/65535   [???]
56c56
< Control 0xc0: +/0/65535   [???]
---
> Control 0xc0: +/36924/65535   [???]
62a63
> Control 0xff: +/0/65535   [???]
64,65c65,66
<  Identifier "DELL E176FP"
<  ModelName "DELL E176FP"
---
>  Identifier "DELL E196FP"
>  ModelName "DELL E196FP"
67c68
<  # Monitor Manufactured week 45 of 2005
---
>  # Monitor Manufactured week 24 of 2006
70c71
<  DisplaySize 340 270
---
>  DisplaySize 380 300
73c74
<  Horizsync 31-80
---
>  Horizsync 31-83



=====================================
comparing an e176FPf that doesn't work with gddccontrol to a dell 1905FP which does work with gddccontrol

diff dell_e176FPf_ddc.txt dell1905FP.txt 


10c10
<  Plug and Play ID: DELA014 [VESA standard monitor]
---
>  Plug and Play ID: DEL400C [Dell 1905FP (analog)]
12,23d11
< =============================== WARNING ===============================
< There is no support for your monitor in the database, but ddccontrol is
< using a basic generic profile. Many controls will not be supported, and
< some controls may not work as expected.
< Please update ddccontrol-db, or, if you are already using the latest
< version, please send the output of the following command to
< ddccontrol-users@lists.sourceforge.net:
< 
< LANG= LC_ALL= ddccontrol -p -c -d
< 
< Thank you.
< =============================== WARNING ===============================
26c14
< Raw output: type(LCD)vcp(page0(02 04 05 06 08 0E 10 12 14(01 03 04 05 06 08) 16 18 1A 1E 20 30 3E 60 62 68(1) 8A 8C 9B 9C 9D 9E 9F A0 AC AE B6 C0 C6 C8 C9 CA D6(01 02 03 04) DF FA FB FC FD) page2(37 38 39))asset_eep(40)mccs_ver(2.0)
---
> Raw output: vcp(04 06 08 0E 10 12 14(05 08 0B) 16 18 1A 1E 20 30 B6) type(LCD) mccs_ver(1.1) asset_eep(32) mpu(1.02)
28c16
<  VCP: 
---
>  VCP: 04 06 08 0e 10 12 14 16 18 1a 1e 20 30 3e 68 
32,62c20,40
< Control 0x02: +/512/65535   [???]
< Control 0x04: +/0/65535   [???]
< Control 0x05: +/0/65535   [???]
< Control 0x06: +/0/65535   [???]
< Control 0x08: +/0/65535   [???]
< Control 0x0e: +/50/100   [???]
< Control 0x10: +/255/255   [???]
< Control 0x12: +/50/170   [???]
< Control 0x14: +/1280/65535   [???]
< Control 0x16: +/255/255   [???]
< Control 0x18: +/255/255   [???]
< Control 0x1a: +/255/255   [???]
< Control 0x1e: +/0/65535   [???]
< Control 0x20: +/50/100   [???]
< Control 0x30: +/24/48   [???]
< Control 0x3e: +/20/63   [???]
< Control 0x60: +/256/65535   [???]
< Control 0x68: +/256/65535   [???]
< Control 0x9b: +/255/255   [???]
< Control 0x9d: +/255/255   [???]
< Control 0x9f: +/255/255   [???]
< Control 0xac: +/57857/65535   [???]
< Control 0xae: +/22018/65535   [???]
< Control 0xb6: +/768/65535   [???]
< Control 0xc0: +/0/65535   [???]
< Control 0xc6: +/65535/65535   [???]
< Control 0xc8: +/8706/65535   [???]
< Control 0xc9: +/258/65535   [???]
< Control 0xca: +/256/65535   [???]
< Control 0xd6: +/256/65535   [???]
< Control 0xdf: +/512/65535   [???]
---
> Control 0x04: +/0/1 C [Restore Factory Defaults]
> Control 0x06: +/0/1 C [Restore Factory Default Geometry]
> Control 0x08: +/0/1 C [Restore Factory Default Color]
> Control 0x0e: +/100/200 C [Image Lock Coarse (Clock)]
> Control 0x10: +/255/255 C [Brightness]
> Control 0x12: +/65/100 C [Contrast]
> Control 0x14: +/11/12 C [Color Preset - User 1]
> Control 0x16: +/255/255 C [Red maximum level]
> Control 0x18: +/255/255 C [Green maximum level]
> Control 0x1a: +/255/255 C [Blue maximum level]
> Control 0x1e: +/0/1 C [Automatically adjust]
> Control 0x20: +/174/322 C [Horizontal Position]
> Control 0x30: +/24/49 C [Vertical Position]
> Control 0x3e: +/16/63 C [Image Lock Fine (Clock Phase)]
> Control 0x68: +/1/9 C [Language select - English]
> Control 0xa8: +/1/1   [???]
> Control 0xb4: +/1/1   [???]
> Control 0xb6: +/3/3   [???]
> Control 0xd6: +/1/4   [???]
> Control 0xd7: +/0/1   [???]
> Control 0xd8: +/0/1   [???]
64,65c42,43
<  Identifier "DELL E176FP"
<  ModelName "DELL E176FP"
---
>  Identifier "DELL 1905FP"
>  ModelName "DELL 1905FP"
67c45
<  # Monitor Manufactured week 45 of 2005
---
>  # Monitor Manufactured week 3 of 2005
70c48,49
<  DisplaySize 340 270
---
>  Option "SyncOnGreen" "true"
>  DisplaySize 380 310
73,74c52,53
<  Horizsync 31-80
<  VertRefresh 56-75
---
>  Horizsync 30-81
>  VertRefresh 56-76

gddccontrol and Sony SDM-HS94P problems

The Sony SDM-HS94P is a 1280x1024 19" monitor from back in 2004.

sudo get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 2
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
2 potential busses found: 1 3
Will scan through until the first EDID is found.
Pass a bus number as an option to this program to go only for that one.
128-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
Identifier "SDM-HS94P"
ModelName "SDM-HS94P"
VendorName "SNY"
# Monitor Manufactured week 44 of 2004
# EDID version 1.3
# Analog Display
DisplaySize 380 300
Gamma 2.20
Option "DPMS" "true"
Horizsync 28-81
VertRefresh 48-75
# Maximum pixel clock is 140MHz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1280x960, 60Hz
Modeline "Mode 0" 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
EndSection


asking for a ddccontrol probe gives me:


sudo ddccontrol -c -d dev:/dev/i2c-1
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...
Invalid response, first byte is 0x51, should be 0x6e
0000: 51 83 f3 00 00 4f 14 da f9 7d eb fe 67 54 f9 21 | Q....O...}..gT.!
0010: 3a b1 fc d5 fc 47 c4 6a 2e ff 90 2c 92 10 6b dc | :....G.j...,..k.
0020: 06 39 af 6c 97 c5 ef f3 e8 9a 6e 12 f8 d7 49 e3 | .9.l......n...I.
0030: 04 5a 16 d6 d7 7e 3e 2c f6 1b 83 48 73 ff 7f b3 | .Z...~>,...Hs...
0040: 70 49 af | pI.
Invalid response, first byte is 0x51, should be 0x6e
0000: 51 83 f3 00 00 4f 14 da f9 7d eb fe 67 54 f9 21 | Q....O...}..gT.!
0010: 3a b1 fc d5 fc 47 c4 6a 2e ff 90 2c 92 10 6b dc | :....G.j...,..k.
0020: 06 39 af 6c 97 c5 ef f3 e8 9a 6e 12 f8 d7 49 e3 | .9.l......n...I.
0030: 04 5a 16 d6 d7 7e 3e 2c f6 1b 83 48 73 ff 7f b3 | .Z...~>,...Hs...
0040: 70 49 af | pI.
Invalid response, first byte is 0x51, should be 0x6e
0000: 51 83 f3 00 00 4f 14 da f9 7d eb fe 67 54 f9 21 | Q....O...}..gT.!
0010: 3a b1 fc d5 fc 47 c4 6a 2e ff 90 2c 92 10 6b dc | :....G.j...,..k.
0020: 06 39 af 6c 97 c5 ef f3 e8 9a 6e 12 f8 d7 49 e3 | .9.l......n...I.
0030: 04 5a 16 d6 d7 7e 3e 2c f6 1b 83 48 73 ff 7f b3 | .Z...~>,...Hs...
0040: 70 49 af | pI.
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/SNY1B90.xml"
Document not parsed successfully.

EDID readings:
Plug and Play ID: SNY1B90 [VESA standard monitor]
Input type: Analog
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Capabilities:
Invalid response, first byte is 0x51, should be 0x6e
0000: 51 83 f3 00 00 4f 14 da f9 7d eb fe 67 54 f9 21 | Q....O...}..gT.!
0010: 3a b1 fc d5 fc 47 c4 6a 2e ff 90 2c 92 10 6b dc | :....G.j...,..k.
0020: 06 39 af 6c 97 c5 ef f3 e8 9a 6e 12 f8 d7 49 e3 | .9.l......n...I.
0030: 04 5a 16 d6 d7 7e 3e 2c f6 1b 83 48 73 ff 7f b3 | .Z...~>,...Hs...
0040: 70 49 af | pI.
Invalid response, first byte is 0x51, should be 0x6e
0000: 51 83 f3 00 00 4f 14 da f9 7d eb fe 67 54 f9 21 | Q....O...}..gT.!
0010: 3a b1 fc d5 fc 47 c4 6a 2e ff 90 2c 92 10 6b dc | :....G.j...,..k.
0020: 06 39 af 6c 97 c5 ef f3 e8 9a 6e 12 f8 d7 49 e3 | .9.l......n...I.
0030: 04 5a 16 d6 d7 7e 3e 2c f6 1b 83 48 73 ff 7f b3 | .Z...~>,...Hs...
0040: 70 49 af | pI.
...
Capabilities read fail.

Controls (valid/current/max) [Description - Value name]:
Invalid response, first byte is 0x51, should be 0x6e
51 82 01 00 bc 4f 14 da f9 7d eb | Q....O...}.
Invalid response, first byte is 0x51, should be 0x6e
51 82 01 00 bc 4f 14 da f9 7d eb | Q....O...}.
...



So ddccontrol won't read the capabilities, gddccontrol displays a tab that only has the title of "zero", but I can do this manually to change the brightness and contrast:

(I'm specifying the specific device because I've got more than one monitor attached)

setting brightness to 60

sudo ddccontrol dev:/dev/i2c-1 -r 0x10 -w 60

setting contrast to 60

sudo ddccontrol dev:/dev/i2c-1 -r 0x12 -w 60


ddccontrol complains, but the monitor does respond. So at least I can make it work.

Writing 0x10, 0x3c(60)...
Invalid response, first byte is 0x51, should be 0x6e
51 82 01 10 ac 3c 94 da b9 7d eb | Q....<...}.
Invalid response, first byte is 0x51, should be 0x6e
51 82 01 10 ac 3c 94 da b9 7d eb | Q....<...}.
Invalid response, first byte is 0x51, should be 0x6e
51 82 01 10 ac 3c 94 da b9 7d eb | Q....<...}.

Saturday, April 8, 2017

acer v173 works with ddccontrol

interestingly, if I drag the gddccontrol window to the other monitor, it will switch to controlling the monitor that it isn't currently on.

but when I invoke ddccontrol to specify a specific i2c device, I learned I have to use dev: in front of it like this: "dev:/dev/i2c-1"

so for my acer v173:


sudo ddccontrol -c -d /dev/i2c-1
ddccontrol version 0.4.2

Reading EDID and initializing DDC/CI at bus /dev/i2c-1...
Invalid filename (/dev/i2c-1).

DDC/CI at /dev/i2c-1 is unusable (-3).
If your graphics card need it, please check all the required kernel modules are loaded (i2c-dev, and your framebuffer driver).

===================================================

it doesn't like the device name:

but if I use the dev: syntax, no problemo


sudo ddccontrol  -c -d dev:/dev/i2c-1

ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/ACR0019.xml"
Document not parsed successfully.

EDID readings:
 Plug and Play ID: ACR0019 [VESA standard monitor]
 Input type: Analog
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Capabilities:
Raw output: (prot(monitor)type(LCD)model(V173)cmds(01 02 03 07 0C E3 F3)vcp(04 05 06 08 0E 10 12 14(05 08 0B) 16 18 1A 1E 20 30 3E AC AE B2 B6 C6 C8 C9 DF )mswhql(1)asset_eep(40)mccs_ver(2.0))
Parsed output: 
 VCP: 04 05 06 08 0e 10 12 14 16 18 1a 1e 20 30 3e ac ae b2 b6 c6 c8 c9 df 
 Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/1/2   [???]
Control 0x04: +/0/1 C [Restore Factory Defaults]
Control 0x05: +/0/1 C [Restore Brightness and Contrast]
Control 0x06: +/0/1 C [Restore Factory Default Geometry]
Control 0x08: +/0/1 C [Restore Factory Default Color]
Control 0x0b: +/100/0   [???]
Control 0x0c: +/35/63   [???]
Control 0x0e: +/50/100 C [Image Lock Coarse (Clock)]
Control 0x10: +/62/100 C [Brightness]
Control 0x12: +/56/100 C [Contrast]
Control 0x14: +/5/11 C [???]
Control 0x16: +/80/100 C [Red maximum level]
Control 0x18: +/80/100 C [Green maximum level]
Control 0x1a: +/80/100 C [Blue maximum level]
Control 0x1e: +/0/1 C [Automatically adjust]
Control 0x1f: +/1/1   [???]
Control 0x20: +/50/100 C [Horizontal Position]
Control 0x30: +/34/62 C [Vertical Position]
Invalid response, corrupted data - xor is 0xa9, length 0x08
6e 88 02 01 31 31 00 00 3e 00 22                | n...11..>."     
Control 0x3e: +/54/63 C [Image Lock Fine (Clock Phase)]
Control 0x52: +/255/65535   [???]
Control 0x60: +/1/1   [???]
Control 0x6c: +/50/100   [???]
Control 0x6e: +/50/100   [???]
Control 0x70: +/50/100   [???]
Invalid response, length is 9, should be 8 at most
Invalid response, length is 9, should be 8 at most
Invalid response, length is 9, should be 8 at most
Control 0xac: +/64200/0 C [???]
Control 0xae: +/6030/65535 C [???]
Control 0xb2: +/1/1 C [???]
Control 0xb6: +/3/5 C [???]
Control 0xc0: +/42654/65535   [???]
Control 0xc6: +/120/255 C [???]
Control 0xc8: +/9/0 C [???]
Control 0xc9: +/2/65535 C [???]
Control 0xca: +/1/2   [???]
Control 0xcc: +/2/7   [???]
Control 0xd6: +/1/4   [???]
Control 0xdf: +/512/65535 C [???]

ddccontrol and different monitors

Not every monitor supports ddc, so I thought I'd try a few:

An EIZO CE240W doesn't support ddc at all...

My Hanns-G HH241 works fine.

==========================================================

A Sun Microsystems 24.1" LCD v4 works fine and gives these results:

sudo ddccontrol -p 
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Probing for available monitors...I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/SUN059A.xml"
Document not parsed successfully.
....
Detected monitors :
- Device: dev:/dev/i2c-3
DDC/CI supported: Yes
Monitor Name: VESA standard monitor
Input type: Digital
(Automatically selected)
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-3...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/SUN059A.xml"
Document not parsed successfully.

EDID readings:
Plug and Play ID: SUN059A [VESA standard monitor]
Input type: Digital
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

= VESA standard monitor
> Color settings
> Brightness and Contrast
> id=brightness, name=Brightness, address=0x10, delay=-1ms, type=0
supported, value=68, maximum=100
> id=contrast, name=Contrast, address=0x12, delay=-1ms, type=0
supported, value=50, maximum=100
> Color maximum level
> id=red, name=Red maximum level, address=0x16, delay=-1ms, type=0
supported, value=100, maximum=100
> id=green, name=Green maximum level, address=0x18, delay=-1ms, type=0
supported, value=100, maximum=100
> id=blue, name=Blue maximum level, address=0x1a, delay=-1ms, type=0
supported, value=100, maximum=100
> Color minimum level
> id=redblack, name=Red minimum level, address=0x6c, delay=-1ms, type=0
supported, value=123, maximum=255
> id=greenblack, name=Green minimum level, address=0x6e, delay=-1ms, type=0
supported, value=123, maximum=255
> id=blueblack, name=Blue minimum level, address=0x70, delay=-1ms, type=0
supported, value=123, maximum=255
> Others
> Restore defaults
> id=defaults, name=Restore Factory Defaults, address=0x4, delay=2000ms, type=1
Possible values:
> id=default - name=Restore Factory Defaults, value=1
supported, value=0, maximum=65535
> id=defaultluma, name=Restore Brightness and Contrast, address=0x5, delay=2000ms, type=1
Possible values:
> id=default - name=Restore Brightness and Contrast, value=1
supported, value=0, maximum=65535
> id=defaultcolor, name=Restore Factory Default Color, address=0x8, delay=2000ms, type=1
Possible values:
> id=default - name=Restore Factory Default Color, value=1
supported, value=0, maximum=65535
> Input settings
> id=inputsource, name=Input Source Select, address=0x60, delay=-1ms, type=2
Possible values:
> id=analog - name=Analog, value=1
> id=digital - name=Digital, value=3
supported, value=3, maximum=3
> Power control
> id=dpms, name=DPMS Control, address=0xd6, delay=-1ms, type=2
Possible values:
> id=on - name=On, value=1
> id=standby - name=Standby, value=4
supported, value=1, maximum=5


==================================================


and running

sudo ddccontrol -p -c -d

gives this:

ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Probing for available monitors...I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/SUN059A.xml"
Document not parsed successfully.
....
Detected monitors :
- Device: dev:/dev/i2c-3
DDC/CI supported: Yes
Monitor Name: VESA standard monitor
Input type: Digital
(Automatically selected)
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-3...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/SUN059A.xml"
Document not parsed successfully.

EDID readings:
Plug and Play ID: SUN059A [VESA standard monitor]
Input type: Digital
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Capabilities:
Raw output: (prot(monitor)type(LCD)model(Sun)cmde(01 02 03 07 0C E3 F3)vcp(02 04 05 08 0B 0C 10 12 14(01 05 08 0B) 16 18 1A 52 60(01 03) 6C 6E 70 AC AE B2 B6 C6 C8 C9 CC(00 02 03 04 05 10) D6(01 04) DF)mswhql(1)asset_eep(40)mccs_ver(2.0))
Parsed output: 
VCP: 02 04 05 08 0b 0c 10 12 14 16 18 1a 52 60 6c 6e 70 ac ae b2 b6 c6 c8 c9 cc d6 df 
Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/2/2 C [???]
Control 0x04: +/0/65535 C [Restore Factory Defaults]
Control 0x05: +/0/65535 C [Restore Brightness and Contrast]
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Control 0x08: +/0/65535 C [Restore Factory Default Color]
Control 0x0b: +/3000/12288 C [???]
Control 0x0c: +/1/6 C [???]
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Control 0x10: +/68/100 C [Brightness]
Control 0x12: +/50/100 C [Contrast]
Control 0x14: +/8/11 C [???]
Control 0x16: +/100/100 C [Red maximum level]
Control 0x18: +/100/100 C [Green maximum level]
Control 0x1a: +/100/100 C [Blue maximum level]
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Invalid response, first byte is 0xbe, should be 0x6e
be 6e 80 be 6e 80 be 6e 80 be 6e                | .n..n..n..n     
Invalid response, first byte is 0x80, should be 0x6e
80 be 6e 80 be 6e 80 be 6e 80 be                | ..n..n..n..     
Control 0x52: +/72/255 C [???]
Control 0x60: +/3/3 C [Input Source Select - Digital]
Control 0x6c: +/123/255 C [Red minimum level]
Control 0x6e: +/123/255 C [Green minimum level]
Control 0x70: +/123/255 C [Blue minimum level]
Invalid response, length is 9, should be 8 at most
Invalid response, length is 9, should be 8 at most
Invalid response, length is 9, should be 8 at most
Control 0xac: +/73/65535 C [???]
Control 0xae: +/59/65535 C [???]
Control 0xb2: +/1/1 C [???]
Control 0xb6: +/3/5 C [???]
Control 0xc6: +/90/255 C [???]
Control 0xc8: +/8969/65535 C [???]
Control 0xc9: +/512/255 C [???]
Control 0xca: +/1/2   [???]
Control 0xcc: +/2/9 C [???]
Control 0xd6: +/1/5 C [DPMS Control - On]
Control 0xdf: +/512/65535 C [???]
Control 0xe5: +/19202/2   [???]

===========================================================================

A dell 2408wfp works fine and gives this:

sudo get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 2
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
1 potential busses found: 3
128-byte EDID successfully retrieved from i2c bus 3
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
Identifier "DELL 2408WFP"
ModelName "DELL 2408WFP"
VendorName "DEL"
# Monitor Manufactured week 28 of 2008
# EDID version 1.3
# Digital Display
DisplaySize 520 320
Gamma 2.20
Option "DPMS" "true"
Horizsync 30-83
VertRefresh 56-76
# Maximum pixel clock is 170MHz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1600x1200, 60Hz
#Not giving standard mode: 1152x864, 75Hz
Modeline  "Mode 0" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync 
EndSection


sudo ddccontrol -p -c -d
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Probing for available monitors...I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELA02A.xml"
Document not parsed successfully.
....
Detected monitors :
- Device: dev:/dev/i2c-3
DDC/CI supported: Yes
Monitor Name: VESA standard monitor
Input type: Digital
(Automatically selected)
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-3...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELA02A.xml"
Document not parsed successfully.

EDID readings:
Plug and Play ID: DELA02A [VESA standard monitor]
Input type: Digital
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Capabilities:
Raw output: (vcp(02 04 05 06 08 10 12 14(01 05 08 0B 0C) 16 18 1A 52 60(01 03 04 05 07 0C) AC AE B6 C6 C8 C9 D6(01 03 04 05) DC(00 02 03 04 05 06) DF) type(LCD) mccs_ver(2.0) asset_eep(32) mswhql(1))
Parsed output: 
VCP: 02 04 05 06 08 10 12 14 16 18 1a 52 60 ac ae b6 c6 c8 c9 d6 dc df 
Type: Unknown

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/1/2 C [???]
Control 0x04: +/0/1 C [Restore Factory Defaults]
Control 0x05: +/0/1 C [Restore Brightness and Contrast]
Control 0x06: +/0/1 C [Restore Factory Default Geometry]
Control 0x08: +/0/1 C [Restore Factory Default Color]
Control 0x10: +/70/100 C [Brightness]
Control 0x12: +/39/100 C [Contrast]
Control 0x14: +/5/12 C [???]
Control 0x16: +/100/100 C [Red maximum level]
Control 0x18: +/100/100 C [Green maximum level]
Control 0x1a: +/100/100 C [Blue maximum level]
Control 0x52: +/96/255 C [???]
Control 0x60: +/4/12 C [Input Source Select]
Control 0x68: +/1/2   [???]
Control 0x8a: +/256/65535   [???]
Control 0x8c: +/10/65535   [???]
Control 0xac: +/8564/1 C [???]
Control 0xae: +/6000/65535 C [???]
Control 0xb6: +/3/65535 C [???]
Control 0xc6: +/17868/65535 C [???]
Control 0xc8: +/32770/118 C [???]
Control 0xc9: +/1/65535 C [???]
Control 0xd6: +/1/5 C [DPMS Control - On]
Control 0xdc: +/0/6 C [???]
Control 0xdf: +/512/65535 C [???]
Control 0xff: +/0/65535   [???]

=============================================================================

Got gddccontrol working for the first time

Yay! I got gddccontrol working with ubuntu 16.04 and my hanns-g 24 inch monitor.

ddccontrol or gddcontrol seems to need sudo privileges to work.

Installing the ddccontrol and gddccontrol:

sudo apt-get install ddccontrol
sudo apt-get install gddccontrol

I thought I'd install the read-edid as well:

sudo apt-get install read-edid
sudo get-edid | parse-edid


running sudo gddccontrol gives me:




running sudo ddccontrol -p

ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Probing for available monitors.....I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/HSD2275.xml"
Document not parsed successfully.
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/HSDlcd.xml"
Document not parsed successfully.
..
Detected monitors :
 - Device: dev:/dev/i2c-1
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Analog
  (Automatically selected)
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-1...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/HSD2275.xml"
Document not parsed successfully.
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/HSDlcd.xml"
Document not parsed successfully.

EDID readings:
 Plug and Play ID: HSD2275 [VESA standard monitor]
 Input type: Analog
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to
ddccontrol-users@lists.sourceforge.net:

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

= VESA standard monitor
> Color settings
 > Brightness and Contrast
  > id=brightness, name=Brightness, address=0x10, delay=-1ms, type=0
    supported, value=56, maximum=100
  > id=contrast, name=Contrast, address=0x12, delay=-1ms, type=0
    supported, value=77, maximum=100
 > Color maximum level
  > id=red, name=Red maximum level, address=0x16, delay=-1ms, type=0
    supported, value=86, maximum=100
  > id=green, name=Green maximum level, address=0x18, delay=-1ms, type=0
    supported, value=87, maximum=100
  > id=blue, name=Blue maximum level, address=0x1a, delay=-1ms, type=0
    supported, value=80, maximum=100
 > Color minimum level
  > id=redblack, name=Red minimum level, address=0x6c, delay=-1ms, type=0
    supported, value=128, maximum=255
  > id=greenblack, name=Green minimum level, address=0x6e, delay=-1ms, type=0
    supported, value=128, maximum=255
  > id=blueblack, name=Blue minimum level, address=0x70, delay=-1ms, type=0
    supported, value=128, maximum=255
> Position and size
 > Position
  > id=hpos, name=Horizontal Position, address=0x20, delay=-1ms, type=0
    supported, value=50, maximum=100
  > id=vpos, name=Vertical Position, address=0x30, delay=-1ms, type=0
    supported, value=50, maximum=100
 > Automatic adjustments
  > id=auto, name=Automatically adjust, address=0x1e, delay=1000ms, type=1
    Possible values:
   > id=pos - name=H/V Position, value=1
    supported, value=0, maximum=1

Friday, April 7, 2017

Mr. Do!

One of my all time favorites is Mr. Do. I'm not terribly good at it, probably because I always thought in conceptual terms of running Mr. Do along the "invisible grid".

I was amazed at this master playing Mr. Do! for 2.5 hours.



And how to get 255 lives. How do people figure this stuff out?



how to trigger the diamond:

http://www.donhodges.com/mr_do!_diamond_trigger.htm

and some tips on how to play:

http://cubeman.org/mrdotip.txt

I never noticed that the levels have the number as part of their design, probably because I never got past the first few levels.


http://www.eurogamer.net/articles/2014-08-03-somewhere-in-the-multiverse-exists-a-timeline-where-mr-do-is-as-iconic-as-mario

Tuesday, April 4, 2017

Calcuscribe LCD

I thought I'd have a look at the LCD panel of the calcuscribe.

The LCD front:



The LCD back, with a bunch of SEC KS0086 lcd driver chips.




Closeup of a KS0086 chip.




The Tianma TM48064BQ board (480x64).



There's a small variable resistor on the LCD board to adjust the contrast but it doesn't seem to clear up the mess on the display, just making it darker or lighter.

Saturday, April 1, 2017

Oric and the blank space at the left side

I was looking at some videos for the Oric and I noticed that there was a 2 character blank space on the left side of the display. So I did some reading and it turns out that the Oric has a very unique system for choosing colors, using "Serial Attributes" that are stored in screen memory.



So why are there 2 blank spaces? Because you use those two character spots to choose the foreground and background colors.

You can even switch from text to hi-res graphics and back again "on the fly" which is quite clever.

It had 240x200 graphics and each byte in hi-res mode would store 6 pixels. The most significant bit would invert the colors.

Here's some pages that tell you all about the oric's graphic display:

http://www.osdk.org/www_osdk/index.php?page=articles&ref=ART3#title3
http://oric.free.fr/programming.html
http://home.btconnect.com/geffers/files/contents.htm


and since the Oric is 6502 based, why not see what the code will display on an Atari?