Project

General

Profile

Actions

Action Item #147

closed

Post request for firmware validation tools

Added by Hammel about 11 years ago. Updated about 11 years ago.

Status:
Closed
Priority:
Immediate
Assignee:
Category:
02 - GPU Firmware
Target version:
Start date:
31 Jan 2013
Due date:
% Done:

100%

Estimated time:
Severity:
Low

Description

To verify the firmware is working properly (before trying to run XBMC) I need some tools for verifying the installation. Right now xbmc suggests that /dev/vchiq is not configured properly. Here are some selected lines from an strace of the xbmc.bin executable:

open("/dev/vchiq", O_RDWR) = -1 ENOTCONN (Transport endpoint is not connected)
open("/dev/vchiq", O_RDWR) = -1 ENOTCONN (Transport endpoint is not connected)
write(1, "* failed to open vchiq instance\n", 32) = 32

I'd like to have some tool I can run to verify that the firmware is properly configured along with the device driver, which is compiled into the kernel (not a loadable module) at this point.

It's not clear where to ask this question, but I suspect a good place to start is in the Power Users forum.

Actions #1

Updated by Hammel about 11 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 50

Posted a request to the userland issue tracker this afternoon. I'm watching the userland repo now so I should get emails if anyone responds.

Actions #2

Updated by Hammel about 11 years ago

Response from list:

Top of tree userland goes with top of tree start.elf/kernel.img so you should have 3.6.x or revert to:
93ae1bc

Does /opt/xbmc-bcm/xbmc-bin/lib/libvchiq_arm.so exist and have correct permissions? strace suggest it doesn't.

"vcgenmd version" would be the first thing I check for to see if userland is built correctly. It talks to GPU so needs compatible userland/kernel/start.elf.

Actions #3

Updated by Hammel about 11 years ago

popcornmix wrote:

Response from list:

Top of tree userland goes with top of tree start.elf/kernel.img so you should have 3.6.x or revert to:
93ae1bc

Got it. I looked in the firmware logs and found that the apparent match to userland's 93ae1bc is 7beaaffa74159892a03a1c8152588b50d829f6e8 so I'm building using each of those now, until I upgrade my kernel build.

Does /opt/xbmc-bcm/xbmc-bin/lib/libvchiq_arm.so exist and have correct permissions? strace suggest it doesn't.

libvchiq_arm.so was actually under /usr/vc/lib but not /opt/xbmc-bcm/xbmc-bin/lib. So I symlinked the files under /usr/vc/libt to /opt/xbmc-bcm/xbmc-bin/lib but that didn't seem to make a difference.

Here is how it looks:

# ls -l /opt/xbmc-bcm/xbmc-bin/lib/
lrwxrwxrwx    1 root     root            21 Feb  3 10:57 libEGL.so -> /opt/vc/lib/libEGL.so
lrwxrwxrwx    1 root     root            27 Feb  3 10:57 libEGL_static.a -> /opt/vc/lib/libEGL_static.a
lrwxrwxrwx    1 root     root            24 Feb  3 10:57 libGLESv2.so -> /opt/vc/lib/libGLESv2.so
lrwxrwxrwx    1 root     root            30 Feb  3 10:57 libGLESv2_static.a -> /opt/vc/lib/libGLESv2_static.a
lrwxrwxrwx    1 root     root            24 Feb  3 10:57 libOpenVG.so -> /opt/vc/lib/libOpenVG.so
lrwxrwxrwx    1 root     root            21 Feb  3 10:57 libWFC.so -> /opt/vc/lib/libWFC.so
lrwxrwxrwx    1 root     root            26 Feb  3 10:57 libbcm_host.so -> /opt/vc/lib/libbcm_host.so
lrwxrwxrwx    1 root     root            28 Feb  3 10:57 libkhrn_client.a -> /opt/vc/lib/libkhrn_client.a
lrwxrwxrwx    1 root     root            28 Feb  3 10:57 libkhrn_static.a -> /opt/vc/lib/libkhrn_static.a
lrwxrwxrwx    1 root     root            22 Feb  3 10:57 libmmal.so -> /opt/vc/lib/libmmal.so
lrwxrwxrwx    1 root     root            32 Feb  3 10:57 libmmal_vc_client.so -> /opt/vc/lib/libmmal_vc_client.so
lrwxrwxrwx    1 root     root            27 Feb  3 10:57 libopenmaxil.so -> /opt/vc/lib/libopenmaxil.so
lrwxrwxrwx    1 root     root            30 Feb  3 10:57 libvcfiled_check.a -> /opt/vc/lib/libvcfiled_check.a
lrwxrwxrwx    1 root     root            27 Feb  3 10:57 libvchiq_arm.so -> /opt/vc/lib/libvchiq_arm.so
lrwxrwxrwx    1 root     root            25 Feb  3 10:57 libvchostif.a -> /opt/vc/lib/libvchostif.a
lrwxrwxrwx    1 root     root            22 Feb  3 10:57 libvcos.so -> /opt/vc/lib/libvcos.so
lrwxrwxrwx    1 root     root            32 Feb  3 10:57 libvmcs_rpc_client.a -> /opt/vc/lib/libvmcs_rpc_client.a
drwxr-xr-x    4 root     root          4096 Jan 26 13:58 xbmc

# ls -l /opt/vc/lib
-rwxr-xr-x    1 root     root        163536 Dec 31 12:21 libEGL.so
-rw-r--r--    1 root     root        260368 Dec 31 11:02 libEGL_static.a
-rwxr-xr-x    1 root     root         82968 Dec 31 12:21 libGLESv2.so
-rw-r--r--    1 root     root         99568 Dec 31 11:01 libGLESv2_static.a
-rwxr-xr-x    1 root     root         85652 Dec 31 12:21 libOpenVG.so
-rwxr-xr-x    1 root     root         63504 Dec 31 12:21 libWFC.so
-rwxr-xr-x    1 root     root         55176 Dec 31 12:21 libbcm_host.so
-rw-r--r--    1 root     root         12256 Dec 31 11:00 libkhrn_client.a
-rw-r--r--    1 root     root        450564 Dec 31 11:03 libkhrn_static.a
-rwxr-xr-x    1 root     root         40488 Dec 31 12:21 libmmal.so
-rwxr-xr-x    1 root     root         34844 Dec 31 12:21 libmmal_vc_client.so
-rwxr-xr-x    1 root     root         22368 Dec 31 12:21 libopenmaxil.so
-rw-r--r--    1 root     root          2992 Dec 31 11:00 libvcfiled_check.a
-rwxr-xr-x    1 root     root         22088 Dec 31 12:21 libvchiq_arm.so
-rw-r--r--    1 root     root         91560 Dec 31 11:01 libvchostif.a
-rwxr-xr-x    1 root     root         35120 Dec 31 12:21 libvcos.so
-rw-r--r--    1 root     root         31162 Dec 31 11:02 libvmcs_rpc_client.a

"vcgenmd version" would be the first thing I check for to see if userland is built correctly. It talks to GPU so needs compatible userland/kernel/start.elf.

Doesn't seem to work (though this is without the build with the matching commits):

# id
uid=0(root) gid=0(root) groups=0(root),10(wheel)

# ldd vcgencmd
        libvcos.so => /opt/xbmc-bcm/xbmc-bin/lib/libvcos.so (0x4013d000)
        libvchiq_arm.so => /opt/xbmc-bcm/xbmc-bin/lib/libvchiq_arm.so (0x4006f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x4014e000)
        libdl.so.2 => /lib/libdl.so.2 (0x400f4000)
        librt.so.1 => /lib/librt.so.1 (0x4007d000)
        libc.so.6 => /lib/libc.so.6 (0x4016d000)
        /lib/ld-linux.so.3 (0x4002e000)

# ./vcgencmd version
VCHI initialization failed

# strace ./vcgencmd version 2>&1 | grep /dev/vchiq
open("/dev/vchiq", O_RDWR)              = -1 ENOTCONN (Transport endpoint is not connected)

Maybe its just that the userland and firmware builds were not taken from matching releases. I'll try again with the updated commit ids and see what happens.

Actions #4

Updated by Hammel about 11 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 50 to 100

Userland validation can be done using the vgencmd --version command. Rebuilding using the matching userland/firmware repos and trying this succeeded.

Actions

Also available in: Atom PDF