First information for new Pyra owners (FAQ)


Thanks for the Suggestion on how to setup ALSA Propertly, i also got this to work, but it might be whit my Try and Error it could be my Settings arend like they where intendet
My fear (of the dark) where now that when there will be changes in the next Updates, it want get aplied to my Pyra as i made too many changes myself
Is there a way to "Reset" Audio and Low Power Mode Settings to Stock?
 
Thanks for the Suggestion on how to setup ALSA Propertly, i also got this to work, but it might be whit my Try and Error it could be my Settings arend like they where intendet
My fear (of the dark) where now that when there will be changes in the next Updates, it want get aplied to my Pyra as i made too many changes myself
Is there a way to "Reset" Audio and Low Power Mode Settings to Stock?
What might be quite interesting/useful is if there’s a way for you to run a terminal command that identifies all your current ALSA settings to see all the mods you made so that others can replicate them and if they get messed up by future updates you can restore them.
 
I changed only the Dials on Alsamixer no Config Files as these where too deep for my not that heavy knowledge..
Cool, then with your screenshots others should be able to test your settings :)
 
  • Like
Reactions: rSl
Hi all,

Q: How to lower the screen brightness ?

A: Hold down Shift (left trigger) + Key (right of the power button). Press only "Key" to raise the screen brightness. I'd say there are ~15 different levels of brightness available.

Cheers, Magic Sam
 
reflashing. *sigh*
Code:
~# dd if=/local_daten/Linux/pyra-41.img of=/dev/mmcblk0
dd: writing to '/dev/mmcblk0': No space left on device
7744513+0 records in
7744512+0 records out
3965190144 bytes (4.0 GB, 3.7 GiB) copied, 972.142 s, 4.1 MB/s
So 4GB SD Card seems not to be sufficient (anymore?)
Yes, 4GB is too small.
Code:
 dd if=/local_daten/Linux/pyra-41.img of=/dev/mmcblk0
8388608+0 records in
8388608+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 1150.57 s, 3.7 MB/s
 
Last edited:
This may be a silly question. As you may or may not be aware, I'm having a go at developing a 3D game for the Pyra, it's using OpenGL ES 2.0 and SDL2. When I run it, I get :

Code:
kaprikawn@pyra:~/git/pyragles/build$ ./AlphaFlight
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm

and the game runs pretty slowly, even despite the fact that it's not doing much right now.

Is this a result of...

2. 3D games run dog slow

While hardware accelerated 3D does work in theory, it hasn't been properly integrated into the OS (packaging the whole thing as Debian package is not that easy).
Therefore, GL4ES (the OpenGL -> GLES wrapper by ptitSeb) is not currently included - which forces all 3D games to use the MESA Software 3D.

3. SDL Games don't run proper fullscreen / are also very slow

Due to the fact that we're using a portrait display rather than a landscape one (these are only readily available with up to 800x480), TILER does some low-level hardware rotation.
Fullscreen SDL isn't aware of that - and therefore, doesn't work properly.
Windowed SDL works fine, however, scaling is purely done in software, so it will need a LOT more CPU than it should and slows the system down immensively (which means that a lot of stock emulators installed from the Debian repo heat up the unit and only achieve a few FPS.
Ideally, SDL should support hardware scaling via TILER - or we should mostly concentrate on software using SDLv2, as this can use OpenGL (and therefore, scale in fullspeed once the hardware OpenGL is properly integrated).

The fullscreen fix shouldn't be too hard to achieve, hardware scaling is probably more work. If someone wants to take on SDL and create a Pyra optimized version, let me know :).
???

And if so, do I just wait for the OS to be eventually updated?
 
No, it's the result of your program asking for desktop OpenGL 2.0. You need to readd SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); to get SDL2 to create an ES context.

It's also important to link to the right GL implementation. If you accidentally link to MESA, you get software rendering. The fast one was GLESv2 (for OpenGL ES 3.1, heh) on an Odroid, but I'm not 100% if it's the same on the Pyra.

The Odroid printed similar errors but worked anyway, so it's probably fine.
 
No, it's the result of your program asking for desktop OpenGL 2.0. You need to readd SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); to get SDL2 to create an ES context.

It's also important to link to the right GL implementation. If you accidentally link to MESA, you get software rendering. The fast one was GLESv2 (for OpenGL ES 3.1, heh) on an Odroid, but I'm not 100% if it's the same on the Pyra.

The Odroid printed similar errors but worked anyway, so it's probably fine.
Thanks, but I'm still not getting this, I've been googling for a few hours. Is my problem at build/compile time, or to do with the libraries it's loading at runtime? Or both?

I've set up a minimal build...

gles2_test.cpp :
Code:
#include <SDL2/SDL.h>
#include <SDL2/SDL_opengles2.h>
int main( int argc, char **argv ) {
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 2 );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 0 );
  SDL_Window* window     = SDL_CreateWindow( "OpenGL", 100, 100, 800, 600, SDL_WINDOW_OPENGL );
  SDL_GLContext context  = SDL_GL_CreateContext(window);
  const GLubyte* version = glGetString(GL_VERSION);
  printf( "Version string: %s\n", version );
  SDL_GL_DeleteContext( context );
  SDL_DestroyWindow( window );
  SDL_Quit();
  return 0;
}

and am building it with

Code:
g++ `pkg-config --cflags --libs sdl2 glesv2` gles2_test.cpp -o gles2_test
which expands to
Code:
g++ -D_REENTRANT -I/usr/include/SDL2 -lSDL2 -lGLESv2 gles2_test.cpp -o gles2_test

Running the resulting executable gives me the same libGL errors I specified above. And I've tried :
Code:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libEGL.so:/usr/lib/arm-linux-gnueabihf/libGLESv2.so ./gles2_test
with the same results. I'm not sure where to go from here.
 
@kaprikawn In test program above, you forgot to initialize SDL. What do you (or anyone with a Pyra) get if you run this:
C:
#include <SDL2/SDL.h>
#include <SDL2/SDL_opengles2.h>
int main( int argc, char **argv ) {
  SDL_Init(SDL_INIT_VIDEO);
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 2 );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 0 );
  SDL_Window* window     = SDL_CreateWindow( "OpenGL", 100, 100, 800, 600, SDL_WINDOW_OPENGL );
  SDL_GLContext context  = SDL_GL_CreateContext(window);
  const GLubyte* version = glGetString(GL_VERSION);
  printf( "Version string: %s\n", version );
  const GLubyte* renderer = glGetString(GL_RENDERER);
  printf( "Renderer string: %s\n", renderer );
  glClearColor(0.0,0.5,0.0,0);
  glClear(GL_COLOR_BUFFER_BIT);
  SDL_GL_SwapWindow(window);
  SDL_Delay(1000);
  SDL_GL_DeleteContext( context );
  SDL_DestroyWindow( window );
  SDL_Quit();
  return 0;
}
Build instructions are the same. If you get a green window and a sensible version and renderer (not llvmpipe), then don't worry if there's some libgl error at the start.


It's also important to link to the right GL implementation. If you accidentally link to MESA, you get software rendering. The fast one was GLESv2 (for OpenGL ES 3.1, heh) on an Odroid, but I'm not 100% if it's the same on the Pyra.
Here I was talking about the last step of the build process, linking. Specifically, the -lGLESv2 part of the build command. I wasn't thinking of LD_PRELOAD. But I see now that you use pkg-config, so you're all set. Sorry about sending you on a wild goose chase.

With that, the only problem I can see is the gl profile selection. At the start of your project (commit ed8796c), you create a window with OpenGL ES, all good. But in the next commit, https://github.com/kaprikawn/pyragles/commit/234b214 you reorganize everything, and the line that selects the ES profile is gone. Since then, the program has been technically using desktop OpenGL. As you stick to the subset that is ES 2.0, you can just add back the missing line.
 
@kaprikawn In test program above, you forgot to initialize SDL. What do you (or anyone with a Pyra) get if you run this:
C:
#include <SDL2/SDL.h>
#include <SDL2/SDL_opengles2.h>
int main( int argc, char **argv ) {
  SDL_Init(SDL_INIT_VIDEO);
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 2 );
  SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 0 );
  SDL_Window* window     = SDL_CreateWindow( "OpenGL", 100, 100, 800, 600, SDL_WINDOW_OPENGL );
  SDL_GLContext context  = SDL_GL_CreateContext(window);
  const GLubyte* version = glGetString(GL_VERSION);
  printf( "Version string: %s\n", version );
  const GLubyte* renderer = glGetString(GL_RENDERER);
  printf( "Renderer string: %s\n", renderer );
  glClearColor(0.0,0.5,0.0,0);
  glClear(GL_COLOR_BUFFER_BIT);
  SDL_GL_SwapWindow(window);
  SDL_Delay(1000);
  SDL_GL_DeleteContext( context );
  SDL_DestroyWindow( window );
  SDL_Quit();
  return 0;
}
Build instructions are the same. If you get a green window and a sensible version and renderer (not llvmpipe), then don't worry if there's some libgl error at the start.



Here I was talking about the last step of the build process, linking. Specifically, the -lGLESv2 part of the build command. I wasn't thinking of LD_PRELOAD. But I see now that you use pkg-config, so you're all set. Sorry about sending you on a wild goose chase.

With that, the only problem I can see is the gl profile selection. At the start of your project (commit ed8796c), you create a window with OpenGL ES, all good. But in the next commit, https://github.com/kaprikawn/pyragles/commit/234b214 you reorganize everything, and the line that selects the ES profile is gone. Since then, the program has been technically using desktop OpenGL. As you stick to the subset that is ES 2.0, you can just add back the missing line.
No worries on the wild goose chase. Building, linking libraries and stuff like that is a bit of a blind spot to me. Any chance to learn helps me out.

Still no dice on your code, it's outputting :

Code:
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
Version string: OpenGL ES 3.0 Mesa 18.3.6
Renderer string: llvmpipe (LLVM 7.0, 128 bits)

so it's using the software renderer by my reading of it, specifically the last line.
 
Code:
g++ `pkg-config --cflags --libs sdl2 glesv2` gles2_test.cpp -o gles2_test
which expands to
Code:
g++ -D_REENTRANT -I/usr/include/SDL2 -lSDL2 -lGLESv2 gles2_test.cpp -o gles2_test

Running the resulting executable gives me the same libGL errors I specified above. And I've tried :
Code:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libEGL.so:/usr/lib/arm-linux-gnueabihf/libGLESv2.so ./gles2_test
with the same results. I'm not sure where to go from here.
There's doc on the wiki, use it : https://pyra-handheld.com/wiki/index.php?title=Using_SDL2 :p

You probably wanna add export CFLAGS="-I/opt/omap5-sgx-ddk-um-linux/include" LD_FLAGS="-L/opt/omap5-sgx-ddk-um-linux/lib" before building
and then export SDL_OPENGL_ES_DRIVER=1 SDL_VIDEO_EGL_DRIVER=/opt/omap5-sgx-ddk-um-linux/lib/libEGL.so.1 before running your newly built app
 
There's doc on the wiki, use it : https://pyra-handheld.com/wiki/index.php?title=Using_SDL2 :p

You probably wanna add export CFLAGS="-I/opt/omap5-sgx-ddk-um-linux/include" LD_FLAGS="-L/opt/omap5-sgx-ddk-um-linux/lib" before building
and then export SDL_OPENGL_ES_DRIVER=1 SDL_VIDEO_EGL_DRIVER=/opt/omap5-sgx-ddk-um-linux/lib/libEGL.so.1 before running your newly built app
Thanks, the discoverability on the wiki is poor, I hadn't seen that page.

I'm still getting issues though, all I'm getting is a black screen. I tried @Pocak 's code, and that didn't run with these changes. So I tried your code as the wiki instructs and I'm getting the following :

Code:
[wayne@pyra]~/test/sdl2_example $ cat output.txt
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
/build/dri3wsegl-pyra-0.5/dri3_ws.c:895: WSEGL_GetDrawableParameters: Buffer busy, waiting
/build/dri3wsegl-pyra-0.5/dri3_ws.c:895: WSEGL_GetDrawableParameters: Buffer busy, waiting
[ snip - this error seems to be printing to the console once per frame until I hit escape ]
DRI3 1.0
present 1.2
DRM FD 7
vert shader compiled -1228009144
frag shader compiled -1228009144

Here's my setup to get to this :

Code:
[wayne@pyra]~/test/sdl2_example $ ls -l
total 5
-rw-r--r-- 1 wayne wayne 3646 May  9 21:49 gles2_test.cpp
-rwxr-xr-x 1 wayne wayne  334 May  9 22:05 run.sh

Code:
[wayne@pyra]~/test/sdl2_example $ cat gles2_test.cpp
#include <SDL.h>
#ifdef USE_OPENGLES
#include <SDL_opengles2.h>
#else
#define GL_GLEXT_PROTOTYPES
#include <SDL_opengl.h>
#include <SDL_opengl_glext.h>
#endif

#include <stdio.h> // for printf

SDL_Window *sdl_window;
SDL_GLContext sdl_gl_context;

void initSDL() {
        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
                fprintf(stderr, "Couldn't init SDL2: %s\n", SDL_GetError());
                exit(1);
        }

#ifdef USE_OPENGLES
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,
                SDL_GL_CONTEXT_PROFILE_ES);
#endif

        int video_width = 800;
        int video_height = 480;
        int window_flags = SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN;
        sdl_window = SDL_CreateWindow("Test",
                SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
                video_width, video_height, window_flags);
        if (!sdl_window) {
                fprintf(stderr, "Failed to create OpenGL window: %s\n", SDL_GetError());
                exit(1);
        }

        sdl_gl_context = SDL_GL_CreateContext(sdl_window);
        if (!sdl_gl_context) {
                fprintf(stderr, "Failed to create OpenGL context: %s\n", SDL_GetError());
                exit(2);
        }
}

void quitSDL() {
        SDL_GL_DeleteContext(sdl_gl_context);
        SDL_DestroyWindow(sdl_window);
        SDL_Quit();
}

int main(int argc, char *argv[]) {
        initSDL();

        // create shader
        const char *shader_vert_src =
                "uniform float u_time;\n"
                "attribute vec2 va_position;\n"
                "varying vec3 v_color;\n"
                "void main() {\n"
                "       v_color = vec3(1.0 - 0.5*(va_position.x+va_position.y),va_position);\n"
                "       float c = cos(u_time), s = sin(u_time);"
                "       vec2 t = mat2(c, s, -s, c)*(va_position-vec2(0.33));\n"
                "       gl_Position = vec4(t.x*3.0/5.0, t.y, 0.0, 1.0);\n"
                "}\n";
        const char *shader_frag_src =
                "#ifdef GL_ES\n"
                "precision mediump float;\n"
                "#endif\n"
                "varying vec3 v_color;\n"
                "void main() {\n"
                "       gl_FragColor = vec4(v_color, 1.0);\n"
                "}\n";
        GLint is_compiled;
        GLuint program, shader_vert, shader_frag;
        program = glCreateProgram();
        shader_vert = glCreateShader(GL_VERTEX_SHADER);
        glShaderSource(shader_vert, 1, &shader_vert_src, NULL);
        glCompileShader(shader_vert);
        glGetShaderiv(shader_vert, GL_COMPILE_STATUS, &is_compiled);
        printf("vert shader compiled %d\n", is_compiled);
        glAttachShader(program, shader_vert);
        shader_frag = glCreateShader(GL_FRAGMENT_SHADER);
        glShaderSource(shader_frag, 1, &shader_frag_src, NULL);
        glCompileShader(shader_frag);
        glGetShaderiv(shader_frag, GL_COMPILE_STATUS, &is_compiled);
        printf("frag shader compiled %d\n", is_compiled);
        glAttachShader(program, shader_frag);
        glLinkProgram(program);
        glUseProgram(program);
        GLuint u_time_loc = glGetUniformLocation(program, "u_time");
        float u_time = 0.0f;

        // create vbo
        GLuint vbo;
        glGenBuffers(1, &vbo);
        glBindBuffer(GL_ARRAY_BUFFER, vbo);
        float vertex_data[] = {0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f};
        glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW);

        // setup vertex attribs
        GLuint va_position = 0;
        glEnableVertexAttribArray(va_position);
        glVertexAttribPointer(va_position, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);

        glClearColor(0.4, 0.6, 0.8, 1.0);
        bool running = true;
        do {
                SDL_Event event;
                while (SDL_PollEvent(&event)) {
                        running = !(event.type == SDL_QUIT
                                || (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE));
                }

                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                glUniform1f(u_time_loc, u_time += 1.0f/60.0f);
                glDrawArrays(GL_TRIANGLES, 0, 3);
                SDL_GL_SwapWindow(sdl_window);
        } while (running);

        glUseProgram(0);
        glBindBuffer(GL_ARRAY_BUFFER, 0);

        glDeleteProgram(program);
        glDeleteBuffers(1, &vbo);

        quitSDL();

        return 0;
}

Code:
[wayne@pyra]~/test/sdl2_example $ cat ./run.sh
#!/bin/bash
export CFLAGS="-I/opt/omap5-sgx-ddk-um-linux/include" LD_FLAGS="-L/opt/omap5-sgx-ddk-um-linux/lib"
c++ `pkg-config --cflags --libs sdl2 glesv2` -DUSE_OPENGLES gles2_test.cpp -o gles2_test
export SDL_OPENGL_ES_DRIVER=1 SDL_VIDEO_EGL_DRIVER=/opt/omap5-sgx-ddk-um-linux/lib/libEGL.so.1
./gles2_test > output.txt 2>&1
exit 0
Code:
./run.sh

Also for reference, here's the output with Pocat's code :

Code:
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: unable to load driver: omapdrm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: omapdrm
DRI3 1.0
present 1.2
DRM FD 7
Version string: (null)
Renderer string: (null)

In both cases all you get is a black screen. So I can see it's not using the software renderer anymore. But it doesn't seem to be getting a GL context.
 
can you "ldd gles2_test" to see what library are linked there
Code:
[wayne@pyra]~/test/sdl2_example $ ldd gles2_test
        libSDL2-2.0.so.0 => /lib/arm-linux-gnueabihf/libSDL2-2.0.so.0 (0xb6e98000)
        libGLESv2.so.2 => /lib/arm-linux-gnueabihf/libGLESv2.so.2 (0xb6e7a000)
        libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6d6f000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6cf4000)
        libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6ccb000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6bd1000)
        libasound.so.2 => /lib/arm-linux-gnueabihf/libasound.so.2 (0xb6b24000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6b11000)
        libpulse-simple.so.0 => /lib/arm-linux-gnueabihf/libpulse-simple.so.0 (0xb6afd000)
        libpulse.so.0 => /lib/arm-linux-gnueabihf/libpulse.so.0 (0xb6ab8000)
        libsndio.so.7.0 => /lib/arm-linux-gnueabihf/libsndio.so.7.0 (0xb6a9c000)
        libX11.so.6 => /lib/arm-linux-gnueabihf/libX11.so.6 (0xb69a9000)
        libXext.so.6 => /lib/arm-linux-gnueabihf/libXext.so.6 (0xb698e000)
        libXcursor.so.1 => /lib/arm-linux-gnueabihf/libXcursor.so.1 (0xb6977000)
        libXinerama.so.1 => /lib/arm-linux-gnueabihf/libXinerama.so.1 (0xb6964000)
        libXi.so.6 => /lib/arm-linux-gnueabihf/libXi.so.6 (0xb694a000)
        libXrandr.so.2 => /lib/arm-linux-gnueabihf/libXrandr.so.2 (0xb6933000)
        libXss.so.1 => /lib/arm-linux-gnueabihf/libXss.so.1 (0xb6920000)
        libXxf86vm.so.1 => /lib/arm-linux-gnueabihf/libXxf86vm.so.1 (0xb690c000)
        libwayland-egl.so.1 => /lib/arm-linux-gnueabihf/libwayland-egl.so.1 (0xb68fa000)
        libwayland-client.so.0 => /lib/arm-linux-gnueabihf/libwayland-client.so.0 (0xb68e1000)
        libwayland-cursor.so.0 => /lib/arm-linux-gnueabihf/libwayland-cursor.so.0 (0xb68ca000)
        libxkbcommon.so.0 => /lib/arm-linux-gnueabihf/libxkbcommon.so.0 (0xb688a000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6865000)
        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb684f000)
        /lib/ld-linux-armhf.so.3 (0xb6f90000)
        libGLdispatch.so.0 => /lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb67cf000)
        libpulsecommon-12.2.so => /usr/lib/arm-linux-gnueabihf/pulseaudio/libpulsecommon-12.2.so (0xb6768000)
        libcap.so.2 => /lib/arm-linux-gnueabihf/libcap.so.2 (0xb6754000)
        libdbus-1.so.3 => /lib/arm-linux-gnueabihf/libdbus-1.so.3 (0xb6713000)
        libbsd.so.0 => /lib/arm-linux-gnueabihf/libbsd.so.0 (0xb66f0000)
        libxcb.so.1 => /lib/arm-linux-gnueabihf/libxcb.so.1 (0xb66c8000)
        libXrender.so.1 => /lib/arm-linux-gnueabihf/libXrender.so.1 (0xb66b1000)
        libXfixes.so.3 => /lib/arm-linux-gnueabihf/libXfixes.so.3 (0xb669d000)
        libffi.so.6 => /lib/arm-linux-gnueabihf/libffi.so.6 (0xb6687000)
        libX11-xcb.so.1 => /lib/arm-linux-gnueabihf/libX11-xcb.so.1 (0xb6675000)
        libICE.so.6 => /lib/arm-linux-gnueabihf/libICE.so.6 (0xb6654000)
        libSM.so.6 => /lib/arm-linux-gnueabihf/libSM.so.6 (0xb663e000)
        libXtst.so.6 => /lib/arm-linux-gnueabihf/libXtst.so.6 (0xb662a000)
        libsystemd.so.0 => /lib/arm-linux-gnueabihf/libsystemd.so.0 (0xb65b3000)
        libwrap.so.0 => /lib/arm-linux-gnueabihf/libwrap.so.0 (0xb659c000)
        libsndfile.so.1 => /lib/arm-linux-gnueabihf/libsndfile.so.1 (0xb6537000)
        libasyncns.so.0 => /lib/arm-linux-gnueabihf/libasyncns.so.0 (0xb6522000)
        libXau.so.6 => /lib/arm-linux-gnueabihf/libXau.so.6 (0xb650f000)
        libXdmcp.so.6 => /lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xb64fb000)
        libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xb64e5000)
        liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb64bb000)
        liblz4.so.1 => /lib/arm-linux-gnueabihf/liblz4.so.1 (0xb6496000)
        libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0xb63e4000)
        libnsl.so.1 => /lib/arm-linux-gnueabihf/libnsl.so.1 (0xb63c4000)
        libFLAC.so.8 => /lib/arm-linux-gnueabihf/libFLAC.so.8 (0xb637f000)
        libogg.so.0 => /lib/arm-linux-gnueabihf/libogg.so.0 (0xb636a000)
        libvorbis.so.0 => /lib/arm-linux-gnueabihf/libvorbis.so.0 (0xb6339000)
        libvorbisenc.so.2 => /lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0xb62a7000)
        libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb6287000)
        libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0xb6263000)
 
Back
Top