Patsie Posted November 29, 2016 Posted November 29, 2016 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?
Igor Posted November 29, 2016 Posted November 29, 2016 Perhaps you face this problem? When you made an upgrade, tools were upgraded into broken one ...
Patsie Posted November 29, 2016 Author Posted November 29, 2016 h3disp didn't display any error message and as noted, my 1080p TV did say the +2E was running in 1680x1050 mode. But I will install the sunxi tools you pointed out tomorrow, try again and let you know.
Patsie Posted November 30, 2016 Author Posted November 30, 2016 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.
Igor Posted November 30, 2016 Posted November 30, 2016 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).
jernej Posted November 30, 2016 Posted November 30, 2016 @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.
Igor Posted November 30, 2016 Posted November 30, 2016 Thank for tips, I hope they will do. @Patsie Attach 2E to our beta repository and try - updates will be once in the morning.
jernej Posted November 30, 2016 Posted November 30, 2016 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). 1
Patsie Posted November 30, 2016 Author Posted November 30, 2016 Thanks, I'll try the beta repo tomorrow. I hope the last 'little bug' that Jernej mentioned won't be an issue I'll let you know how it works out tomorrow.
jernej Posted November 30, 2016 Posted November 30, 2016 I hope the last 'little bug' that Jernej mentioned won't be an issue It is already fixed and it will be included in nightly build.
Patsie Posted December 1, 2016 Author Posted December 1, 2016 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
Patsie Posted December 1, 2016 Author Posted December 1, 2016 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 )
Patsie Posted December 1, 2016 Author Posted December 1, 2016 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.
jernej Posted December 1, 2016 Posted December 1, 2016 What means "fiddling" here? What exactly did you change?
Patsie Posted December 1, 2016 Author Posted December 1, 2016 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.
jernej Posted December 1, 2016 Posted December 1, 2016 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.
Patsie Posted December 1, 2016 Author Posted December 1, 2016 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.
Igor Posted December 1, 2016 Posted December 1, 2016 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.
Patsie Posted December 1, 2016 Author Posted December 1, 2016 I understand the testing part completely Since you already added this change to the repo, any future change I might have I will do via a pull request. 1
jernej Posted January 17, 2017 Posted January 17, 2017 I created a tool (special U-Boot) which tells correct parameters for monitor native resolution: https://github.com/igorpecovnik/lib/issues/594#issuecomment-272992961 Please run it (link above) and copy output or post an image what is displayed.
Patsie Posted January 17, 2017 Author Posted January 17, 2017 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?
jernej Posted January 17, 2017 Posted January 17, 2017 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
zador.blood.stained Posted January 17, 2017 Posted January 17, 2017 In other words, it's a standard u-boot image (which contains both the SPL and the u-boot proper)
Patsie Posted January 17, 2017 Author Posted January 17, 2017 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
Recommended Posts