[BPI-R2] Hdmi in uboot and linux

Hi, if the only reason is font size, You may try change font. For example:

setfont Uni3-TerminusBold28x14.psf.gz
setfont Uni3-TerminusBold32x16.psf.gz

These are really big :slight_smile:

Available fonts are in /usr/share/consolefonts/.

Imho after kenrel starts it overrides any previous settings on fb init. So the proper way is likely to deal with KMS settings. (Unless You need some predefined resolution in uboot, of course)

Btw, i’ve rebooted the kernel with modified uEnv.txt

bootopts=vmalloc=496M debug=7 initcall_debug=0 video=1600x900-32

And it hepld.

New photo by Alexander Ryabchenko

My monitor’s native resolution is 1920x1080, and it was successfully overrided by “video=” parameter. The only issue for me is that that parameter affects Xorg server too.

I’ve used this and this for example and explanation

1 Like

I will try these settings with 1024x768 (vga-adapter+15" monitor) and 1280x1024 (dvi+19"). There it is right to use it also for xserver

Have you found a way to boot with your damaged slot?

setfont works well, tried to set resolution to video=1280x720-32 (720p) but my tv seems not to support this…with “720x480-32” (tried 800x600, but also unsupported mode) i see large text on TV, so this setting works so far. Seems to be a Problem of TV not hdmi-driver or R2

hdmi->dvi works in my test with video=1280x1024-32 (native resolution of TFT)

hdmi->vga gives a fuzzy image on screen (800x600-32,native 1024x768 does not work)…but i guess it’s a adapter-/tft-Problem…these are quite old :slight_smile: IMG_20180525_112206_small

Mhm on raspberry3 same adapter with this monitor works with 1024x768 (hdmi-group=2,mode=16): IMG_20180525_115138_1024x768

I’ve found a service which can fix or replace it, but I can’t get there until weekend. For now I’ve applied temporary “there, I fixit”-style solution with a peace of duct tape :slight_smile:

Probably a driver issue, I’ll try to apply these modes, but anyway we need more testers.

Maybe wrong frequency (75 instead of 60hz)…how can i set frequency in video-param? Or can i set modes like on rpi?

anyway, i thinking about porting actual code to 4.16-main…in most cases hdmi works…

are you working on porting it to 4.14?

Added a HMDI-section in my wiki to summarize the infos we have collected so far

Please try 1024x768@60 or 1024x768-32@60, see second link that I’ve provided for proper synthax

Not yet, I took overtime at work, so, probably next week.

Unfortunately both will result in this: _20180525_1024

In comparision to rpi the hsync-value is wrong…sorry loaded wrong kernel last time so the fb0 disappeared

[13:32] root@bpi-r2:~# cat /sys/class/graphics/fb0/modes                                                                                                          
[13:33] root@bpi-r2:~# fbset -fb /dev/fb0 -g 1024 768 1024 768 32

but no effect

It’s looks strange, horisontal frequency is overclocked. Probably it’s not supported mode. Is there anything useful in dmesg?

I’m not sure about r2, but I’ve tested fbset command on my desktop with Radeon card and it actually changes only terminal size (cols and rows) but not resolution.

not really: dmesg-hdmi.txt (58,2 KB)

also with -32: dmesg-hdmi-32.txt (58,2 KB)

is there a command i can try to set KMS without rebooting and forcing that monitor recognize the change?

also with nomodeset i’m having hsync of 67.x hz, found a documentation where hsync can be set in drm-code: https://www.kernel.org/doc/html/v4.8/gpu/drm-kms.html

activated drm-debug which i have found somewhere: dmesg-hdmi-32-debug.txt (9,3 KB)

IMG_20180525_150914_800 IMG_20180525_151119_640

@Ryder.Lee have you tested these resolutions too? can this be a driver-Problem?

720p seems also not work…at least on my TV. where is the hsync for these KMS-Modes defined? i guess these are wrong for some modes…

i looked through the patches but found no reference to hsync

imho hsync should be set via drm (https://01.org/linuxgraphics/gfx-docs/drm/API-drm-mode-hsync.html)…gets the hsync if set and calculated if not set…maybe we can use printk’s to display it while booting and maybe set it somehow (have not found out how…). i think there have to be a function (maybe drm_mode_probed_add) where we can submit a drm_display_mode ( https://01.org/linuxgraphics/gfx-docs/drm/API-struct-drm-display-mode.html )

maybe i can increase debug-level for this: https://github.com/frank-w/BPI-R2-4.14/blob/4.16-hdmi/drivers/gpu/drm/drm_drv.c (e.g. 0x07 optionally with log_buf_len=1M)

maybe this dir is used to define timings: https://github.com/frank-w/BPI-R2-4.14/tree/4.16-hdmi/Documentation/EDID (800x600 defines 40000hz=40kHz as far as i understand, other modes have no settings)

maybe i can try first with additional modes in video=param like described here https://cgit.freedesktop.org/nouveau/linux-2.6/tree/Documentation/fb/modedb.txt especially ‘M’ and ‘m’ modes

Did you remove theses two lines in dts?

assigned-clocks = <&topckgen CLK_TOP_HDMI_SEL>;

assigned-clock-parents = <&hdmi_phy>;

If so, could you test those resolutions in desktop environment?

I did: https://github.com/frank-w/BPI-R2-4.14/commit/af526fa3b11b6fcd2092626550cde0d1acb6404e

you can look in source on github…I will push all changes there…

You mean running xserver with these resolutions?

Yes, or something like that. I’ve tested 1080P60hz / 1280720p / 720480p before.

ok, will try it when i’m @ home,

have you tried (x)vga-resolutions (1024x768@60,800x600@60, 640x480@60)? if not can you try that and look on HSYNC?

can i add a printk to show calculated HSYNC in dmesg? where can i add it?

with “video=1280x720-32 drm.debug=0x7”

  • no virtual console visible (unsupported mode, my tv did not say more)
  • if i start xserver, it is displayed with 1080p (1920x1080)
  • mode listed from fbdev (only one): [16:58] root@bpi-r2:~# cat /sys/class/graphics/fb0/modes
  • drm-log: drm-debug_1280x720-32.txt (25,8 KB)
  • same result without -32 and with @60 (no fbdev-console,xserver in 1080p)
  • i see purple screen on my TV which should be 720p (preloader/uboot)…so my TV supports 720p

720x480@60 seems to work, but screen is cutted (and no screen-justification from tv possible only mode 16:9 & 4:3 & zoom available), xserver here also again 1080p


[17:13] root@bpi-r2:~# cat /sys/class/graphics/fb0/modes                                                                                                                       

drm-debug_720x480.txt (121,2 KB)

x-log_720x480.txt (50,4 KB)

i’ve found no /etc/X11/xorg.conf…it seems to be configured on-the-fly

btw. i tried this in uEnv.txt:

video=1280x720-32 drm.debug=0x7
bootopts=vmalloc=496M debug=7 initcall_debug=0 video=${video}

but it seems that ${…} in bootargs don’t get evaluated…anything i can realize that?

Hello, everyone!

My R2’s sd slot has been replaced, so I’m back in buisness!

I’ve made an attempt to port hdmi driver to 4.14 kernel it’s here. In currents state the kernel is able to be compiled, runs, and even detects hdmi, but there are errors. And hdmi don’t work.

4.14-hdmi (37,5 kB)

Looks like i’ve messed up with timers. At least for now all this timers and dts stuff is out of my league. So i need some help or advice from someone skilled, because all i can do looks like throwing darts at a phone book.

P.S. Looks like reboot doesn’t work too.

[ 2144.497906] reboot: Restarting system
[ 2145.501566] Reboot failed -- System halted
1 Like

Hi Frank,

I got both fbdev and Xorg working with “video=1280x720-32 drm.debug=0x7” parameters.

debug_1280x720-32.txt (26,0 kB)

Google Photos Google Photos

Also i’ve tested 1024x768 and 1280x1024 resolutions both are ok with fbdev and Xorg. And 1024x768 is @75Hz refresh rate. (I didn’t checked for 1280x1024)

Btw, looks like on my R2 preloader/uboot purple screens resolution is 1080p