Jump to content

Various AML-S905X-CC bugs (Le Potato)


UniformBuffer

Recommended Posts

Armbianmonitor:

Hi,

first of all, thanks for all the good work on supporting all these single board computer. There no exist other disto that can do it. Indeed, this is the only general purpouse linux distro that officially support Le Potato.

I would like to ask some help to solve these problems that i have encountered using my board.

I have searched on the forum and i have not found any post on these problems.

Sorry to be vague in the title, but all these bug appeared after the kernel update, so they may be caused by the same problem.

I use a Libre Computer Le Potato inside a Sunfounder Raspad kit. The system is an Armbian Stable with apt linked to Debian Sid repository, so i receive stable updates from Armbian and unstable updates from Debian.

I know that Sid is experimental and a lot of thing could not work, but i don't think these problem are related to this, but instead to something wrong in the kernel since these problems appeared after the kernel update, in November 2019, if i remember well.

I will try to describe the problems accuratly as much as i can. If some more data is needed, i can provide all the informations.

 

Impossible to use all the memory:

I have noticed that the system does not use ram over 1GB, but instead start to allocate to the swap memory.

I have tried to reduce the swappiness to 0,but it does not help. It is like there is an "hard limit" that does not allow the system to allocate more than 1GB of ram.

I don't know if it can be helpful, but after some research i have noticed that on the /proc/meminfo, at the voice CmaTotal, the value is setted on 917504 kB.

If i'm not wrong cma is a separate allocation system that reserve some of the system memory. On the armbianEnv.txt, the cma is setted on 512M; it is strange that the value is not the same. I have also tried to set a lower value, but nothing happen.

 

Unable to use any kind of drm kms program:

For a university project that i'm doing, i need to use the drm kms system, but seems that any kind of program that use that system does not work.

I have tried:

  • Removed the forced software rendering on Xorg (that make X use the drm system); the desktop appear, but blink continuously and after some moment become unresponsive
  • GDM: Crash at startup
  • Weston: Crash at startup
  • kmscube: Start, but i get no signal from monitor until i terminate with CTRL-C the program
  • Many other test programs found on drm test of mesa library have the same result

I have also noticed that when i use some of the mentioned program, the dmesg report something like "alloc_contig_range: [X, Y) PFNs busy". From some research, it seems to be a problem in the memory allocation using the cma system, so the problem could be connected with the previous one.

Before the kernel update, the drm system worked simply using software rendering. Now it does not work nor using gpu, nor using software.

 

Audio problem:

After the kernel update the audio sound like an old radio. I can hear what the audio is playing, but it is very confused and disturbed. The audio come from the HDMI.

On the dmesg appear:

[   33.305753] hdmi-audio-codec hdmi-audio-codec.5.auto: hdmi_codec_hw_params() width 16 rate 44100 channels 2
[   33.305788] meson-dw-hdmi c883a000.hdmi-tx: channels=2 sample_width=16 sample_rate=44100
[   33.305877] __setup_desc: width=16 channels=2 desc=0
[   33.305902] meson_aiu_i2s_dma_hw_params: physical_width=16 buffer_bytes=17664 period_bytes=4352
[   33.306008] __dma_init_mem
[   33.348631] meson-aiu-i2s meson-aiu-i2s.3.auto: Failed to set sysclk to 0Hz

 

Then also continuously appear:

[   33.362214] __hold: enable=1
[   33.362280] __dma_enable: enable=0
[   33.363573] meson-aiu-i2s meson-aiu-i2s.3.auto: Failed to set sysclk to 0Hz

 

 

Lastly, i don't know if could be important, but before the February update, the monitor was not centered, but have an offset of half a centimeter that move the screen on the bottom. Like i said, this problem is now fixed with the last kernel update.

 

I think it's all. If there are some question or missing data, i will provide anything is needed.

Thanks again for the dedicated time and the effort invested on the Armbian project.

 

Edited by UniformBuffer
Clarification
Link to comment
Share on other sites

16 minutes ago, UniformBuffer said:
Armbianmonitor:

Hi,

first of all, thanks for all the good work on supporting all these single board computer. There no exist other disto that can do it. Indeed, this is the only general purpouse linux distro that officially support Le Potato.

I would like to ask some help to solve these problems that i have encountered using my board.

I have searched on the forum and i have not found any post on these problems.

Sorry to be vague in the title, but all these bug appeared after the kernel update, so they may be caused by the same problem.

I use a Libre Computer Le Potato inside a Sunfounder Raspad kit. The system is an Armbian Stable with apt linked to Debian Sid repository, so i receive stable updates from Armbian and unstable updates from Debian.

I know that Sid is experimental and a lot of thing could not work, but i don't think these problem are related to this, but instead to something wrong in the kernel since these problems appeared after the kernel update, in November 2019, if i remember well.

I will try to describe the problems accuratly as much as i can. If some more data is needed, i can provide all the informations

 

Sorry you're having trouble. we switched from a special kernel branch to mainline... Honestly you'll probably want to roll back to the older kernel for all the DRM stuff at this point.

 

Try this image and see if its any better.. The audio has hte same issue on this image tho.

 

https://armbian.lane-fu.com/Armbian_20.02.0_Lepotato_buster_current_5.4.20_desktop.img

Link to comment
Share on other sites

Echoing what Lanefu said, thanks for the info, and sorry about the rough edges!  A new set of sound patches have been submitted upstream, I will take a look at them and see if they can be used as a means of cleaning up our current implementation (targeted originally for 4.19).  

 

The memory limit seems to be a potential u-boot issue.  For the display, the Amlogic clock framework has been an ongoing project for mainline, with a lot of changes.  I will spend some quality time with everyone's favorite S905X board and get back to you.  🙂

Link to comment
Share on other sites

6 hours ago, UniformBuffer said:

Impossible to use all the memory:

I have noticed that the system does not use ram over 1GB, but instead start to allocate to the swap memory.

I have tried to reduce the swappiness to 0,but it does not help. It is like there is an "hard limit" that does not allow the system to allocate more than 1GB of ram.

I don't know if it can be helpful, but after some research i have noticed that on the /proc/meminfo, at the voice CmaTotal, the value is setted on 917504 kB.

If i'm not wrong cma is a separate allocation system that reserve some of the system memory. On the armbianEnv.txt, the cma is setted on 512M; it is strange that the value is not the same. I have also tried to set a lower value, but nothing happen.

 

yeah that's super interesting.. according to your armbianmonitor -u the OS definitely sees 2 gig.   What happens if your turn swap off

 

total used free shared buff/cache available 

Mem: 1,9Gi 755Mi 953Mi 23Mi 254Mi 1,1Gi Swap: 981Mi 452Mi 528Mi

 

Link to comment
Share on other sites

12 hours ago, lanefu said:

 

yeah that's super interesting.. according to your armbianmonitor -u the OS definitely sees 2 gig.   What happens if your turn swap off

 


total used free shared buff/cache available 

Mem: 1,9Gi 755Mi 953Mi 23Mi 254Mi 1,1Gi Swap: 981Mi 452Mi 528Mi

 

 

Turning off the swap memory using swapoff command make the system slow and stuck when near to the 1GB limit, like the system goes out of memory. Having a swap memory simply cause the system to start to use it after 1GB like the RAM is full.

Link to comment
Share on other sites

Wow, you managed to solve it, can't wait to see your fix merged. Also, your suggestion to rollback the kernel works, now i have sound again while waiting your patch.

Thanks a lot for your blazing fast support and the effort employed to solve these problems. I would also like to contribute to development but i have not yet reached the necessary skill level.... for now :-)

Link to comment
Share on other sites

Regarding the drm kms problem, i found that mesa have some drm integrated tests, one among them "modetest".

When launched on my machine the result is:

Spoiler

trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...done
Encoders:
id    crtc    type    possible crtcs    possible clones    
32    0    TVDAC    0x00000001    0x00000000
33    39    TMDS    0x00000001    0x00000000

Connectors:
id    encoder    status        name        size (mm)    modes    encoders
31    0    connected    composite-1        0x0        2    32
  modes:
    name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  720x576i 50 720 732 795 864 576 580 586 625 13500 flags: interlace; type: driver
  720x480i 60 720 739 801 858 480 488 494 525 13500 flags: interlace; type: driver
  props:
    1 EDID:
        flags: immutable blob
        blobs:

        value:
    2 DPMS:
        flags: enum
        enums: On=0 Standby=1 Suspend=2 Off=3
        value: 3
    5 link-status:
        flags: enum
        enums: Good=0 Bad=1
        value: 0
    6 non-desktop:
        flags: immutable range
        values: 0 1
        value: 0
    4 TILE:
        flags: immutable blob
        blobs:

        value:
    20 CRTC_ID:
        flags: object
        value: 0
34    33    connected    HDMI-A-1           0x0        28    33
  modes:
    name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  1280x800 60 1280 1328 1360 1440 800 803 807 823 71000 flags: phsync, pvsync; type: preferred, driver
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
  1920x1080i 60 1920 2008 2052 2200 1080 1084 1094 1125 74250 flags: phsync, pvsync, interlace; type: driver
  1920x1080i 60 1920 2008 2052 2200 1080 1084 1094 1125 74250 flags: phsync, pvsync, interlace; type: driver
  1920x1080i 60 1920 2008 2052 2200 1080 1084 1094 1125 74176 flags: phsync, pvsync, interlace; type: driver
  1280x1024 60 1280 1328 1440 1688 1024 1025 1028 1066 108000 flags: phsync, pvsync; type: driver
  1280x960 60 1280 1376 1488 1800 960 961 964 1000 108000 flags: phsync, pvsync; type: driver
  1152x864 75 1152 1216 1344 1600 864 865 868 900 108000 flags: phsync, pvsync; type: driver
  1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
  1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
  1280x720 60 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver
  1024x768 85 1024 1072 1168 1376 768 769 772 808 94500 flags: phsync, pvsync; type: driver
  1024x768 75 1024 1040 1136 1312 768 769 772 800 78750 flags: phsync, pvsync; type: driver
  1024x768 70 1024 1048 1184 1328 768 771 777 806 75000 flags: nhsync, nvsync; type: driver
  1024x768 60 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver
  800x600 85 800 832 896 1048 600 601 604 631 56250 flags: phsync, pvsync; type: driver
  800x600 75 800 816 896 1056 600 601 604 625 49500 flags: phsync, pvsync; type: driver
  800x600 72 800 856 976 1040 600 637 643 666 50000 flags: phsync, pvsync; type: driver
  800x600 60 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver
  800x600 56 800 824 896 1024 600 601 603 625 36000 flags: phsync, pvsync; type: driver
  720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  640x480 85 640 696 752 832 480 481 484 509 36000 flags: nhsync, nvsync; type: driver
  640x480 75 640 656 720 840 480 481 484 500 31500 flags: nhsync, nvsync; type: driver
  640x480 73 640 664 704 832 480 489 492 520 31500 flags: nhsync, nvsync; type: driver
  props:
    1 EDID:
        flags: immutable blob
        blobs:

        value:
            00ffffffffffff0020641d7b01000000
            201b0103800000780ae0ce9e59579723
            124c542fce00455981808140714f6159
            315901010101bc1b00a0502017303020
            340000000000001e000000ff004c544d
            31320a20202020202020000000fc0048
            444d49310a20202020202020000000fc
            00504a343032442d320a20202020013f
            02031bf1489005040302071601230907
            0765030c00100083010000023a801871
            382d40582c450007442100001e011d80
            18711c1620582c250007442100009e01
            1d007251d01e206e2855000744210000
            1e8c0ad08a20e02d10103e9600074421
            00001800000000000000000000000000
            00000000000000000000000000000047
    2 DPMS:
        flags: enum
        enums: On=0 Standby=1 Suspend=2 Off=3
        value: 0
    5 link-status:
        flags: enum
        enums: Good=0 Bad=1
        value: 0
    6 non-desktop:
        flags: immutable range
        values: 0 1
        value: 0
    4 TILE:
        flags: immutable blob
        blobs:

        value:
    20 CRTC_ID:
        flags: object
        value: 39

CRTCs:
id    fb    pos    size
39    41    (0,0)    (1280x800)
  1280x800 60 1280 1328 1360 1440 800 803 807 823 71000 flags: phsync, pvsync; type: preferred, driver
  props:
    22 ACTIVE:
        flags: range
        values: 0 1
        value: 1
    23 MODE_ID:
        flags: blob
        blobs:

        value:
            58150100000530055005a00500002003
            23032703370300003c00000005000000
            48000000313238307838303000000000
            00000000000000000000000000000000
            00000000
    19 OUT_FENCE_PTR:
        flags: range
        values: 0 18446744073709551615
        value: 0
    24 VRR_ENABLED:
        flags: range
        values: 0 1
        value: 0

Planes:
id    crtc    fb    CRTC x,y    x,y    gamma size    possible crtcs
35    39    41    0,0        0,0    0           0x000000ff
  formats: AR24 AB24 XR24 XB24 RG24 RG16
  props:
    8 type:
        flags: immutable enum
        enums: Overlay=0 Primary=1 Cursor=2
        value: 1
    17 FB_ID:
        flags: object
        value: 41
    18 IN_FENCE_FD:
        flags: signed range
        values: -1 2147483647
        value: -1
    20 CRTC_ID:
        flags: object
        value: 39
    13 CRTC_X:
        flags: signed range
        values: -2147483648 2147483647
        value: 0
    14 CRTC_Y:
        flags: signed range
        values: -2147483648 2147483647
        value: 0
    15 CRTC_W:
        flags: range
        values: 0 2147483647
        value: 1280
    16 CRTC_H:
        flags: range
        values: 0 2147483647
        value: 800
    9 SRC_X:
        flags: range
        values: 0 4294967295
        value: 0
    10 SRC_Y:
        flags: range
        values: 0 4294967295
        value: 0
    11 SRC_W:
        flags: range
        values: 0 4294967295
        value: 83886080
    12 SRC_H:
        flags: range
        values: 0 4294967295
        value: 52428800
    36 zpos:
        flags: immutable range
        values: 1 1
        value: 1
37    0    0    0,0        0,0    0           0x000000ff
  formats: YUYV NV12 NV21 YU24 YU16 YU12 YU11 YUV9
  props:
    8 type:
        flags: immutable enum
        enums: Overlay=0 Primary=1 Cursor=2
        value: 0
    17 FB_ID:
        flags: object
        value: 0
    18 IN_FENCE_FD:
        flags: signed range
        values: -1 2147483647
        value: -1
    20 CRTC_ID:
        flags: object
        value: 0
    13 CRTC_X:
        flags: signed range
        values: -2147483648 2147483647
        value: 0
    14 CRTC_Y:
        flags: signed range
        values: -2147483648 2147483647
        value: 0
    15 CRTC_W:
        flags: range
        values: 0 2147483647
        value: 0
    16 CRTC_H:
        flags: range
        values: 0 2147483647
        value: 0
    9 SRC_X:
        flags: range
        values: 0 4294967295
        value: 0
    10 SRC_Y:
        flags: range
        values: 0 4294967295
        value: 0
    11 SRC_W:
        flags: range
        values: 0 4294967295
        value: 0
    12 SRC_H:
        flags: range
        values: 0 4294967295
        value: 0
    38 zpos:
        flags: immutable range
        values: 0 0
        value: 0

Frame buffers:
id    size    pitch

 

A strange thing that I have noticed is that the first connector called "composite-1" is attached to encoder with id 0, that does not exist. If I'm not wrong, every connector must have a valid encoder.

Maybe the programs that use drm crash because the first connector is automatically chosen?

Also in some places are reported the use of a framebuffer with id 41, but the framebuffer list at the bottom is empty.

To be honest maybe the problem could be related to the monitor i use since the drm, from what i know, is highly integrated with the presentation system. As monitor i use the Raspad display connected with HDMI. To be precise, the monitor is a 10.1 inch IPS HDMI LCD with a native resolution of 1280×800.

I have also compiled glmark2 and executed it.

When launched normally wth "glmark2-es2-drm -d" the screen become black (because the drm grab the control of the screen), but nothing is displayed and i get "no signal" from the monitor.

If launched adding the validate option using the command "glmark2-es2-drm --validate -d", i got some errors and the result is this:

Spoiler

=======================================================
    glmark2 2017.07
=======================================================
    OpenGL Information
    GL_VENDOR:     lima
    GL_RENDERER:   Mali450
    GL_VERSION:    OpenGL ES 2.0 Mesa 19.3.3
=======================================================
[build] use-vbo=false: Validation: Failure
[build] use-vbo=true: Validation: Success
[texture] texture-filter=nearest: Validation: Failure
[texture] texture-filter=linear: Validation: Success
[texture] texture-filter=mipmap: Validation: Success
[shading] shading=gouraud: Validation: Failure
[shading] shading=blinn-phong-inf: Validation: Failure
[shading] shading=phong:Errore di segmentazione
fabio@lepotato:~$ glmark2-es2-drm --validate -d
Debug: Using Udev to detect the right DRM node to use
Debug: Looking for the main GPU DRM node...
Debug: Not found!
Debug: Looking for a concrete GPU DRM node...
Debug: Success!
Debug: Trying to use the DRM node /dev/dri/card0
Debug: Success!
Debug: Using eglGetPlatformDisplayEXT()
Debug: Got 4 suitable EGLConfigs:
Debug:
Debug:     cfg buf  rgb  colorbuffer dp st config native support surface sample
Debug:      id  sz  lum  r  g  b  a  th cl caveat render  visid    type  buf ns
Debug: ------------------------------------------------------------------------
Debug:     0x2  32  rgb  8  8  8  8  24  0   None   true0x34325241     0x4   0  0
Debug:     0x3  32  rgb  8  8  8  8  24  8   None   true0x34325241     0x4   0  0
Debug:     0x5  32  rgb  8  8  8  8  24  0   None   true0x34325241     0x4   1  4
Debug:     0x6  32  rgb  8  8  8  8  24  8   None   true0x34325241     0x4   1  4
Debug:
Debug: Best EGLConfig ID: 0x2
Info: =======================================================
Info:     glmark2 2017.07
Info: =======================================================
Info:     OpenGL Information
Info:     GL_VENDOR:     lima
Info:     GL_RENDERER:   Mali450
Info:     GL_VERSION:    OpenGL ES 2.0 Mesa 19.3.3
Info: =======================================================
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(1.000000, 1.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     gl_FragColor = Color;
Debug: }
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/horse.3ds'
Debug:     Object name: HORSE_L_Mate Vertex count: 3582 Face count: 7172
Info: [build] use-vbo=false:Debug: Validation failed! Expected: 0xffa7a7a7 Actual: 0x0 Distance: 289.252485
 Validation: Failure
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(1.000000, 1.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     gl_FragColor = Color;
Debug: }
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/horse.3ds'
Debug:     Object name: HORSE_L_Mate Vertex count: 3582 Face count: 7172
Info: [build] use-vbo=true: Validation: Success
Debug: Reading PNG file /usr/local/share/glmark2/textures/crate-base.png
Debug:     Height: 512 Width: 512 Bpp: 3
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(1.000000, 1.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: uniform sampler2D MaterialTexture0;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     vec4 texel = texture2D(MaterialTexture0, TextureCoord);
Debug:     gl_FragColor = texel * Color;
Debug: }
Debug:
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cube.3ds'
Debug:     Object name: Cube Vertex count: 20 Face count: 12
Info: [texture] texture-filter=nearest:Debug: Validation failed! Expected: 0xff282a2b Actual: 0xffadadad Distance: 227.486263
 Validation: Failure
Debug: Reading PNG file /usr/local/share/glmark2/textures/crate-base.png
Debug:     Height: 512 Width: 512 Bpp: 3
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(1.000000, 1.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: uniform sampler2D MaterialTexture0;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     vec4 texel = texture2D(MaterialTexture0, TextureCoord);
Debug:     gl_FragColor = texel * Color;
Debug: }
Debug:
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cube.3ds'
Debug:     Object name: Cube Vertex count: 20 Face count: 12
Info: [texture] texture-filter=linear: Validation: Success
Debug: Reading PNG file /usr/local/share/glmark2/textures/crate-base.png
Debug:     Height: 512 Width: 512 Bpp: 3
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(1.000000, 1.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: uniform sampler2D MaterialTexture0;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     vec4 texel = texture2D(MaterialTexture0, TextureCoord);
Debug:     gl_FragColor = texel * Color;
Debug: }
Debug:
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cube.3ds'
Debug:     Object name: Cube Vertex count: 20 Face count: 12
Info: [texture] texture-filter=mipmap: Validation: Success
Debug: Loading vertex shader from file None:
Debug: const vec4 MaterialDiffuse = vec4(0.000000, 0.000000, 1.000000, 1.000000);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug: attribute vec2 texcoord;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     vec3 N = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // The LightSourcePosition is actually its direction for directional light
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:
Debug:     // Multiply the diffuse value by the vertex color (which is fixed in this case)
Debug:     // to get the actual color that we will use to draw this vertex with
Debug:     float diffuse = max(dot(N, L), 0.0);
Debug:     Color = vec4(diffuse * MaterialDiffuse.rgb, MaterialDiffuse.a);
Debug:
Debug:     // Set the texture coordinates as a varying
Debug:     TextureCoord = texcoord;
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: varying vec4 Color;
Debug: varying vec2 TextureCoord;
Debug:
Debug: void main(void)
Debug: {
Debug:     gl_FragColor = Color;
Debug: }
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cat.3ds'
Debug:     Object name: Mesh1_Materi Vertex count: 7340 Face count: 14348
Info: [shading] shading=gouraud:Debug: Validation failed! Expected: 0xff2d0000 Actual: 0xff191818 Distance: 39.395431
 Validation: Failure
Debug: Loading vertex shader from file None:
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug:
Debug: varying vec3 Normal;
Debug:
Debug: void main(void)
Debug: {
Debug:     // Transform the normal to eye coordinates
Debug:     Normal = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // Transform the position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: const vec3 LightSourceHalfVector = vec3(0.408248, 0.408248, 0.816497);
Debug: const vec4 LightSourcePosition = vec4(20.000000, 20.000000, 10.000000, 1.000000);
Debug: varying vec3 Normal;
Debug:
Debug: void main(void)
Debug: {
Debug:     const vec4 LightSourceAmbient = vec4(0.1, 0.1, 0.1, 1.0);
Debug:     const vec4 LightSourceDiffuse = vec4(0.8, 0.8, 0.8, 1.0);
Debug:     const vec4 LightSourceSpecular = vec4(0.8, 0.8, 0.8, 1.0);
Debug:     const vec4 MaterialAmbient = vec4(1.0, 1.0, 1.0, 1.0);
Debug:     const vec4 MaterialDiffuse = vec4(0.0, 0.0, 1.0, 1.0);
Debug:     const vec4 MaterialSpecular = vec4(1.0, 1.0, 1.0, 1.0);
Debug:     const float MaterialShininess = 100.0;
Debug:
Debug:     vec3 N = normalize(Normal);
Debug:
Debug:     // In the lighting model we are using here (Blinn-Phong with light at
Debug:     // infinity, viewer at infinity), the light position/direction and the
Debug:     // half vector is constant for the all the fragments.
Debug:     vec3 L = normalize(LightSourcePosition.xyz);
Debug:     vec3 H = normalize(LightSourceHalfVector);
Debug:
Debug:     // Calculate the diffuse color according to Lambertian reflectance
Debug:     vec4 diffuse = MaterialDiffuse * LightSourceDiffuse * max(dot(N, L), 0.0);
Debug:
Debug:     // Calculate the ambient color
Debug:     vec4 ambient = MaterialAmbient * LightSourceAmbient;
Debug:
Debug:     // Calculate the specular color according to the Blinn-Phong model
Debug:     vec4 specular = MaterialSpecular * LightSourceSpecular *
Debug:                     pow(max(dot(N,H), 0.0), MaterialShininess);
Debug:
Debug:     // Calculate the final color
Debug:     gl_FragColor = vec4((ambient + specular + diffuse).xyz, 1.0);
Debug: }
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cat.3ds'
Debug:     Object name: Mesh1_Materi Vertex count: 7340 Face count: 14348
Info: [shading] shading=blinn-phong-inf:Debug: Validation failed! Expected: 0xff3e1a1a Actual: 0xff3b0000 Distance: 36.891733
 Validation: Failure
Debug: Loading vertex shader from file None:
Debug: attribute vec3 position;
Debug: attribute vec3 normal;
Debug:
Debug: uniform mat4 ModelViewProjectionMatrix;
Debug: uniform mat4 NormalMatrix;
Debug: uniform mat4 ModelViewMatrix;
Debug:
Debug: varying vec3 vertex_normal;
Debug: varying vec4 vertex_position;
Debug:
Debug: void main(void)
Debug: {
Debug:     vec4 current_position = vec4(position, 1.0);
Debug:
Debug:     // Transform the normal to eye coordinates
Debug:     vertex_normal = normalize(vec3(NormalMatrix * vec4(normal, 1.0)));
Debug:
Debug:     // Transform the current position to eye coordinates
Debug:     vertex_position = ModelViewMatrix * current_position;
Debug:
Debug:     // Transform the current position to clip coordinates
Debug:     gl_Position = ModelViewProjectionMatrix * current_position;
Debug: }
Debug: Loading fragment shader from file None:
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: #ifdef GL_ES
Debug: precision mediump float;
Debug: #endif
Debug: const vec4 MaterialDiffuse = vec4(0.000000, 0.000000, 1.000000, 1.000000);
Debug: const vec4 LightColor0 = vec4(0.800000, 0.800000, 0.800000, 1.000000);
Debug: const vec4 LightSourcePosition0 = vec4(0.000000, 1.000000, 0.000000, 1.000000);
Debug: varying vec3 vertex_normal;
Debug: varying vec4 vertex_position;
Debug:
Debug: vec4
Debug: compute_color(vec4 light_position, vec4 diffuse_light_color)
Debug: {
Debug:     const vec4 lightAmbient = vec4(0.1, 0.1, 0.1, 1.0);
Debug:     const vec4 lightSpecular = vec4(0.8, 0.8, 0.8, 1.0);
Debug:     const vec4 matAmbient = vec4(0.2, 0.2, 0.2, 1.0);
Debug:     const vec4 matSpecular = vec4(1.0, 1.0, 1.0, 1.0);
Debug:     const float matShininess = 100.0;
Debug:     vec3 eye_direction = normalize(-vertex_position.xyz);
Debug:     vec3 light_direction = normalize(light_position.xyz/light_position.w -
Debug:                                      vertex_position.xyz/vertex_position.w);
Debug:     vec3 normalized_normal = normalize(vertex_normal);
Debug:     vec3 reflection = reflect(-light_direction, normalized_normal);
Debug:     float specularTerm = pow(max(0.0, dot(reflection, eye_direction)), matShininess);
Debug:     float diffuseTerm = max(0.0, dot(normalized_normal, light_direction));
Debug:     vec4 specular = (lightSpecular * matSpecular);
Debug:     vec4 ambient = (lightAmbient * matAmbient);
Debug:     vec4 diffuse = (diffuse_light_color * MaterialDiffuse);
Debug:     vec4 result = (specular * specularTerm) + ambient + (diffuse * diffuseTerm);
Debug:     return result;
Debug: }
Debug:
Debug: void main(void)
Debug: {
Debug:     gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
Debug:     gl_FragColor += compute_color(LightSourcePosition0, LightColor0);
Debug:
Debug: }
Debug: Loading model from 3ds file '/usr/local/share/glmark2/models/cat.3ds'
Debug:     Object name: Mesh1_Materi Vertex count: 7340 Face count: 14348
Info: [shading] shading=phong:Errore di segmentazione

 

Anyway I thought these reports could be helpfull to find the root of the problem, so i posted them.

Thanks again for the attention, have a good day

Link to comment
Share on other sites

After some research i discovered some error in the dmesg log regarding the lima driver initialization. Following an extract of dmesg:

Spoiler

[    7.944455] meson-drm d0100000.vpu: Queued 3 outputs on vpu
[    7.952116] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    7.952125] [drm] No driver support for vblank timestamp query.
[    7.987426] meson-dw-hdmi c883a000.hdmi-tx: Detected HDMI TX controller v2.01a with HDCP (meson_dw_hdmi_phy)
[    7.993242] meson-dw-hdmi c883a000.hdmi-tx: registered DesignWare HDMI I2C bus driver
[    7.993804] meson-drm d0100000.vpu: bound c883a000.hdmi-tx (ops meson_dw_hdmi_ops [meson_dw_hdmi])
[    7.994618] [drm] Initialized meson 1.0.0 20161109 for d0100000.vpu on minor 0
[    8.067311] Adding 1005128k swap on /dev/zram1.  Priority:5 extents:1 across:1005128k SSFS
[    8.151488] lima d00c0000.gpu: IRQ ppmmu3 not found
[    8.151498] lima d00c0000.gpu: IRQ ppmmu4 not found
[    8.151502] lima d00c0000.gpu: IRQ ppmmu5 not found
[    8.151507] lima d00c0000.gpu: IRQ ppmmu6 not found
[    8.151512] lima d00c0000.gpu: IRQ ppmmu7 not found
[    8.151527] lima d00c0000.gpu: gp - mali450 version major 0 minor 0
[    8.151559] lima d00c0000.gpu: pp0 - mali450 version major 0 minor 0
[    8.151591] lima d00c0000.gpu: pp1 - mali450 version major 0 minor 0
[    8.151619] lima d00c0000.gpu: pp2 - mali450 version major 0 minor 0
[    8.151645] lima d00c0000.gpu: IRQ pp3 not found
[    8.151651] lima d00c0000.gpu: IRQ pp4 not found
[    8.151655] lima d00c0000.gpu: IRQ pp5 not found
[    8.151660] lima d00c0000.gpu: IRQ pp6 not found
[    8.151665] lima d00c0000.gpu: IRQ pp7 not found
[    8.151671] lima d00c0000.gpu: l2 cache 8K, 4-way, 64byte cache line, 128bit external bus
[    8.151677] lima d00c0000.gpu: l2 cache 64K, 4-way, 64byte cache line, 128bit external bus
[    8.185292] [drm] kms: can't enable cloning when we probably wanted to.
[    8.185549] lima d00c0000.gpu: bus rate = 166666667
[    8.185557] lima d00c0000.gpu: mod rate = 744000000
[    8.186299] [drm] Initialized lima 1.0.0 20190217 for d00c0000.gpu on minor 1

 

I'm refering to the errors like: IRQ ppmmu3 not found. Maybe have something to do with the drm problem.

I found a report on the lima git where the author of the post have the exactly same error on the dmesg: https://gitlab.freedesktop.org/lima/linux/issues/26

He s905 with kernel 5.4. These should be similar to my configuration.

On the same post a patch is suggested to fix the problem and seems, from the author reaction, that worked. I don't know if this patch is already merged or not and i have not tried myself. Anyway i thought it could be useful for solving the problem, so i posted it.

Thanks again for the hard work and dedicated effort.

Link to comment
Share on other sites

35 minutes ago, UniformBuffer said:

On the same post a patch is suggested to fix the problem and seems, from the author reaction, that worked. I don't know if this patch is already merged or not


Here are the patches currently used in the v20.02 kernel

https://github.com/armbian/build/tree/v20.02/patch/kernel/meson64-current

Link to comment
Share on other sites

Thanks for the info, now i can check if some patches are applied.

Anyway after some troubleshooting, i think that the problem with the drm has something related with the monitor (that is initializated by the lima driver? i don't know). Even with randr if i try to get some info, it report:

Spoiler

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1280 x 800, current 1280 x 800, maximum 1280 x 800
default connected 1280x800+0+0 0mm x 0mm
   1280x800       0.00*

Searching a bit deeper i tried to get some info directly from the edid of the monitor using the program "edid-decode"(maybe the monitor is not recognized correctly).

In the /sys/class/drm/ folder i have:
card0/             card0-HDMI-A-1/    renderD128/        
card0-Composite-1/ card1/             version

 

If i check the edid in card0-HDMI-A-1, it report:

Spoiler

edid-decode (hex):

00 ff ff ff ff ff ff 00 20 64 1d 7b 01 00 00 00
20 1b 01 03 80 00 00 78 0a e0 ce 9e 59 57 97 23
12 4c 54 2f ce 00 45 59 81 80 81 40 71 4f 61 59
31 59 01 01 01 01 bc 1b 00 a0 50 20 17 30 30 20
34 00 00 00 00 00 00 1e 00 00 00 ff 00 4c 54 4d
31 32 0a 20 20 20 20 20 20 20 00 00 00 fc 00 48
44 4d 49 31 0a 20 20 20 20 20 20 20 00 00 00 fc
00 50 4a 34 30 32 44 2d 32 0a 20 20 20 20 01 3f

02 03 1b f1 48 90 05 04 03 02 07 16 01 23 09 07
07 65 03 0c 00 10 00 83 01 00 00 02 3a 80 18 71
38 2d 40 58 2c 45 00 07 44 21 00 00 1e 01 1d 80
18 71 1c 16 20 58 2c 25 00 07 44 21 00 00 9e 01
1d 00 72 51 d0 1e 20 6e 28 55 00 07 44 21 00 00
1e 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00 07 44 21
00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47

----------------

EDID version: 1.3
Manufacturer: HCD Model 31517 Serial Number 1
Made in week 32 of 2017
Digital display
Image size is variable
Gamma: 2.20
RGB color display
First detailed timing is preferred timing
Color Characteristics
  Red:   0.6201, 0.3496
  Green: 0.3398, 0.5898
  Blue:  0.1396, 0.0703
  White: 0.2998, 0.3300
Established Timings I & II
    640x480    59.940 Hz   4:3    31.469 kHz  25.175 MHz (DMT)
    640x480    72.809 Hz   4:3    37.861 kHz  31.500 MHz (DMT)
    640x480    75.000 Hz   4:3    37.500 kHz  31.500 MHz (DMT)
    800x600    56.250 Hz   4:3    35.156 kHz  36.000 MHz (DMT)
    800x600    60.317 Hz   4:3    37.879 kHz  40.000 MHz (DMT)
    800x600    72.188 Hz   4:3    48.077 kHz  50.000 MHz (DMT)
    800x600    75.000 Hz   4:3    46.875 kHz  49.500 MHz (DMT)
   1024x768    60.004 Hz   4:3    48.363 kHz  65.000 MHz (DMT)
   1024x768    70.069 Hz   4:3    56.476 kHz  75.000 MHz (DMT)
   1024x768    75.029 Hz   4:3    60.023 kHz  78.750 MHz (DMT)
Standard Timings
    800x600    85.061 Hz   4:3    53.674 kHz  56.250 MHz (DMT)
   1280x1024   60.020 Hz   5:4    63.981 kHz 108.000 MHz (DMT)
   1280x960    60.000 Hz   4:3    60.000 kHz 108.000 MHz (DMT)
   1152x864    75.000 Hz   4:3    67.500 kHz 108.000 MHz (DMT)
   1024x768    84.997 Hz   4:3    68.677 kHz  94.500 MHz (DMT)
    640x480    85.008 Hz   4:3    43.269 kHz  36.000 MHz (DMT)
Detailed mode: Clock 71.000 MHz
               1280 1328 1360 1440 ( 48  32  80)
                800  803  807  823 (  3   4  16)
               +hsync +vsync
               VertFreq: 59.910 Hz, HorFreq: 49.306 kHz
Display Product Serial Number: LTM12
Display Product Name: HDMI1
Display Product Name: PJ402D-2
Has 1 extension block
Checksum: 0x3f

----------------

CTA-861 Extension Block Revision 3
Underscans PC formats by default
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
1 native detailed modes
23 bytes of CTA data blocks
  Video Data Block
     1920x1080   60.000 Hz  16:9    67.500 kHz 148.500 MHz (VIC  16, native)
     1920x1080i  60.000 Hz  16:9    33.750 kHz  74.250 MHz (VIC   5)
     1280x720    60.000 Hz  16:9    45.000 kHz  74.250 MHz (VIC   4)
      720x480    59.940 Hz  16:9    31.469 kHz  27.000 MHz (VIC   3)
      720x480    59.940 Hz   4:3    31.469 kHz  27.000 MHz (VIC   2)
     1440x480i   59.940 Hz  16:9    15.734 kHz  27.000 MHz (VIC   7)
     1440x576i   50.000 Hz  16:9    15.625 kHz  27.000 MHz (VIC  22)
      640x480    59.940 Hz   4:3    31.469 kHz  25.175 MHz (VIC   1)
  Audio Data Block
    Linear PCM, max channels 2
      Supported sample rates (kHz): 48 44.1 32
      Supported sample sizes (bits): 24 20 16
  Vendor-Specific Data Block, OUI 0x000c03 (HDMI)
    Source physical address 1.0.0.0
  Speaker Allocation Data Block
    Speaker map:
      FL/FR - Front Left/Right
Detailed mode: Clock 148.500 MHz, 519 mm x 324 mm
               1920 2008 2052 2200 ( 88  44 148)
               1080 1084 1089 1125 (  4   5  36)
               +hsync +vsync
               VertFreq: 60.000 Hz, HorFreq: 67.500 kHz
Detailed mode: Clock 74.250 MHz, 519 mm x 324 mm
               1920 2008 2052 2200 ( 88  44 148)
                540  542  547  562 (  2   5  15)
               +hsync +vsync
               VertFreq: 60.000i Hz, HorFreq: 33.750 kHz
Detailed mode: Clock 74.250 MHz, 519 mm x 324 mm
               1280 1390 1430 1650 (110  40 220)
                720  725  730  750 (  5   5  20)
               +hsync +vsync
               VertFreq: 60.000 Hz, HorFreq: 45.000 kHz
Detailed mode: Clock 27.000 MHz, 519 mm x 324 mm
                720  736  798  858 ( 16  62  60)
                480  489  495  525 (  9   6  30)
               -hsync -vsync
               VertFreq: 59.940 Hz, HorFreq: 31.469 kHz
Checksum: 0x47

It sounds correct, but I could be wrong.

 

Instead if i try to read the edid of card0-Composite-1 i got:

EDID extract of '/sys/class/drm/card0-Composite-1/edid' failed

 

In the previous posts i have reported the "modetest" result and it says that the composite connector have 2 resolution modes, 720x576i and 720x480i, that i think they are wrong. The HDMI connector instead report a lot of resolutions, including as first 1280x800 that is the native resolution of the monitor.

 

I think that drm programs crash because they select the first connector they get from the drm resources enumeration (so the "corrupted" one).

There is any way to blacklist that connector?

Also, for curiosity, there are any other people that have the same problem (if not, probably has something to do with my strange monitor). To check i think is sufficient to be able to run weston or kmscube successfully.

 

Thanks for the attention and the dedicated effort,

Have a nice day

Link to comment
Share on other sites

Hi,

i have studied how to apply your propose, but i'm not sure how to do it. I have to do it using the armbian build tool or by downloading the amlogic mainline dts, build them and replace the old ones on the /boot folder?

Also, to disable the composite have i to delete that part from the dts?

Or i have to add the 'status = "disabled"', so that it will become:

Spoiler

cvbs-connector {

compatible = "composite-video-connector";

status = "disabled";

port {

cvbs_connector_in: endpoint {

remote-endpoint = <&cvbs_vdac_out>;

};

};

};

 

I never put my hands on the kernel and its components before, so i'm a bit scared to make some mess and to have an unbootable system.

Thanks for the support and the patience.

Link to comment
Share on other sites

Hi,

I found a solution thanks to the help of the armbian community, but since it is something different from the thread topic, I thought it would have been more appropriate to open a dedicated thread:

In short, to disable the drm connector is needed to add to armbianEnv.txt the parameter "extraargs=video=Composite-1:d".

Thanks again for the attention and the dedicated time.

Have a good day

Link to comment
Share on other sites

Hi,

after disabling the bugged connector, some of the drm programs now works, for example the kmscube program.

Other programs instead still not work, even if the error i get is now changed.

For example when i run weston using "wenston-launch" command, i got

Spoiler

../libweston/renderer-gl/egl-glue.c:533: gl_renderer_setup_egl_extensions: Assertion 'gt->set_damage_region' failed

Also when disabling the fbdev driver on xorg.conf (causing the server to use the lima driver), the monitor start blink and at some point hang.

Probably they are caused by the same issue.

I read a lot of posts on the forum regarding hardware acceleration and lima driver on aml-s905, but i have not understood yet if they are working or still in testing. Some posts says that works and some other not. I'm only trying to understand if there is something wrong in my configuration or it is still experimental.

 

Thanks for the dedicated time and effort,

have a nice day

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