Jump to content

OPi PC +2E, h3disp 1680x1050 DVI display issues


Patsie

Recommended Posts

Hi all,

 

Today my second OPi arrived, a +2E. I already have an OPi PC which is working like a charm. So I ordered a +2E as well. I have an older monitor (Dell 2007WFP) with DVI connector and a native resolution of 1680x1050.

From previous experience from the OPi PC, I know that I had to run the 'h3disp' tool to set up this resolution and to make it work via an HDMI-DVI cable.

 

So I connected my new +2E through a normal HDMI cable to my 1080p TV, installed Armbian (Jessie desktop, with legacy kernel), updated to the latest release through 'apt-get update && apt-get dist-upgrade' and after a reboot ran 'h3disp -m 36 -d', just as I had with the OPi PC. After rebooting the +2E, the 1080p TV showed that the +2E was running in 1680x1050 mode and the green haze informed me that it was ready for DVI output. So far all looked well.

But to my (unfortunate) surprise, when I connected it to the Dell 2007WFP monitor, the monitor just went into sleep mode because it didn't recognize the signal. Trying from a cold boot didn't change the monitor's mind and stayed completely blank/off/sleep.

Since the monitor is very picky in what resolutions it can handle, I eventually found one that worked (-m 33, 1280x1024) but this is of course far from perfect.

 

So now I'm wondering why my PC is working perfectly in 'h3disp -m 36 -d', but this new +2E won't. Both systems are connected with the same cables and same power supply to the same monitor.

Both systems are updated to the latest available release.

 

Any tips and/or suggestions?

 

Link to comment
Share on other sites

I have installed the sunxi tools that Igor mentioned on my +2E and have re-set the 1680x1050 resolution again through 'h3disp -m 36 -d'. unfortunately it had the same result that the TV says everything is working as expected at 1680x1050, but the monitor just turns off as soon as I plug in the +2E. Also a cold boot does not result in any picture on the monitor. (Hot)plugging it back into the TV gives me a picture again.

So for now I have just reconnected my OPi PC again with the same 1680x1050 resolution which works like a charm.

 

More suggestions are welcome.

Link to comment
Share on other sites

I have installed the sunxi tools that Igor mentioned on my +2E and have re-set the 1680x1050 resolution again through 'h3disp -m 36 -d'. unfortunately it had the same result that the TV says everything is working as expected at 1680x1050, but the monitor just turns off as soon as I plug in the +2E. Also a cold boot does not result in any picture on the monitor. (Hot)plugging it back into the TV gives me a picture again. So for now I have just reconnected my OPi PC again with the same 1680x1050 resolution which works like a charm. More suggestions are welcome.

Hmm, running low on ideas. Decompile (bin2fex) /boot/script.bin @2E and replace this section with the one from working Opi PC and compile back (fex2bin).

Link to comment
Share on other sites

@Igor,

values here are a bit high. I would suggest divider (second column) 2 and pll_video value of 294. 588 is extremely high clock and datasheet says that HW limit is around 600 MHz. Also HDMI PHY will probably be set better for such bandwith. Oh, and rounding frequency in table to nearest MHz would be also better. Slightly lower frequency doesn't really matter to the display, but driver works mostly by MHz.

Link to comment
Share on other sites

Thank for tips, I hope they will do.

 

Little bug here. You rounded to commonly used 148.5 MHz, which also might be fine, however, in this case you have to change pll_video to 297 (148.5 * 2 = 297). Another, originally recommended, option would be to use 147000000 Hz (lesser error) and pll_video set to 294 (as it is now).

Link to comment
Share on other sites

Thanks for the help so far.

I have tested the nightly build and unfortunately I still can't get any working picture from my 2E on my monitor. If it wasn't working on my TV, then I would have thought the HDMI connector was broken...

 

 

While testing this, I did run into some bugs in the h3disp script that I thought I might fix. I have created a patch file here

Issues found and patched:

1) When not using the '-d' argument, the pll_mode was shifted improperly as an argument for PatchScriptBin, thus not being available when patching the fex. I have defaulted the DVIUsed parameter to 'FALSE' if it is not set and quoting all parameters making sure all arguments are now passed properly.

 

2) While creating the fex from bin it filtered certain keywords from the output, possibly removing parameters in different sections than intended. An example is removing screen0_out_color_range from both sections boot_disp and disp_init when the '-c' parameter is passed, but only setting the one in section disp_init back again. (I assume this is an error)

 

3) The pll_video fex entry was not removed by 2) thus always appending a new entry every time h3disp was run (I ended up with 5 different values in my script.bin eventually :) )

 

To make the fex editing more manageable, I have created a function FexChange() that either edits a value in a given section or, if it doesn't yet exist, adds it to the section.

 

Feedback is welcome

Link to comment
Share on other sites

After 'fiddling' some more with the display parameters I now have a picture at 1680x1050!

It is unstable, because the color red is blinking like some sort of static, but the picture itself seems stable, just the color red isn't.

Because of the flashing/static red color, it seems the frequencies are not stable enough for my monitor yet, so I'll try to fiddle with it some more and see what happens (until smoke comes out of my poor old monitor :) )

Link to comment
Share on other sites

After fiddling with the script.bin/fex a few times and rebooting the +2E to see if I can make it more stable, I once needed to give it a hard power-unplug cold boot. Since then I can't seem to get the picture back anymore with settings that were (somewhat) giving me a picture before.

Link to comment
Share on other sites

I changed the pll_video to various different numbers. The most stable I got was a value of 271. This made the red color jump the least (only once every few seconds)

Tried to change the screen0_out_color_range to various values, but to no effect as I could see.

Tried to change the hdcp_enable and hdmi_cts_compatibility values to either 0 or 1 but the defaults (hdcp_enable=0 and hdmi_cts_compatibility=1) seem to only work.

Link to comment
Share on other sites

Ok, I'm out of ideas. I guess your monitor doesn't support downscaling? If it did, you could just set 1080p and it would get along. You could also try with 720p as compromise solution. Anyway, if U-Boot works but not the kernel, then something is wrong with the drivers.

 

P.S.: Maybe you can check last Armbian image which didn't include U-Boot with splash screen. Maybe kernel driver has some assumptions which gets broken in the process of executing U-Boot driver.

Link to comment
Share on other sites

well, thanks for the assist. If I find anything I'll let you guys know.

 

I hope the h3disp changes are welcome. if this needs to be done is a merge request, please let me know and I'll see if I can do that instead.

Link to comment
Share on other sites

well, thanks for the assist. If I find anything I'll let you guys know.

 

I hope the h3disp changes are welcome. if this needs to be done is a merge request, please let me know and I'll see if I can do that instead.

Sure, I already added them but sure we need test little more ... merge request is one click job ;) so yes.

Link to comment
Share on other sites

Hi Jernej,

 

I'd love to help out, but need a little bit more information. I found some layout of SD card at http://www.orangepi.org/Docs/Settingup.html#SD_Card_Layout

Does your u-boot-h3-video-helper.bin contain the 'unused space', the SPL loader and the u-boot data? In other words should I write this from sector 0? or do I need to zero the card (first 1024k), write an SPL loader from byte 8k and your bin file from 32k?

Link to comment
Share on other sites

Do you have access to (another) linux machine? If yes, then it is easy. Install sunxi tools, connect OPi through micro USB cable and remove SD card. Power on board and execute on host machine:

sunxi-fel uboot u-boot-h3-video-helper.bin

More detailed description at http://linux-sunxi.org/FELand http://linux-sunxi.org/FEL/USBBoot

 

Another possibility is to write it to SD card. Only thing you need to do is:

dd if=uboot-h3-video-helper.bin of=/path/to/sdcard bs=1k seek=8 conv=fsync,notrunc 
Link to comment
Share on other sites

With the help of Jernej I have booted my +2E with this special u-boot image and found the following settings for the 1050p monitor I have:

hdmi_core.c line:
{MODE_XXX, 0, 119000000, 0, 1680, 1050, 1840, 80, 48, 32, 1080, 21, 3, 6, 1, 0, 0, 0, 0}

hdmi_bsp_sun8iw7.c line:
{YYY, 2, 0, 96, 6, 6, 4, 0, 3, 0, 0, 144, 160, 48, 32, 26, 30, 1, 1}

script.bin setting:
pll_video = 238
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines