welcome: please sign in
Differences between revisions 2 and 8 (spanning 6 versions)
Revision 2 as of 2012-05-29 10:14:03
Size: 1926
Editor: jerry.tk
Comment:
Revision 8 as of 2012-06-16 22:33:55
Size: 3297
Editor: jerry.tk
Comment: Fixes for updated build.sh
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
I'm about to go to work in a minute, so please enjoy some terribly condensed instructions on how to build a superpowered Quake 3 in Raspbian, using Hexxeh's SD card image as a base. I've probably missed something important, but this should be a helpful start.  1. Make sure you're up-to-date:
 {{{
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo rpi-update 192
}}}
  . Reboot.
Line 6: Line 12:
 1. Make sure you're up-to-date with everything (aptitude update; aptitude upgrade)
 1. As root: '''aptitude install gcc build-essential libsdl1.2-dev'''
 1. Install required packages:
 {{{
    sudo apt-get install git gcc build-essential libsdl1.2-dev
}}}
Line 10: Line 19:
    mkdir ~/src
    cd ~/src
Line 11: Line 22:
    cd quake3
Line 12: Line 24:
 1. Edit build.sh:
1. Edit ''build.sh'' in ''quake3'' directory:
Line 14: Line 27:
    change line 8 to this: ARM_LIBS=/opt/vc/lib
    change line 16 to this: INCLUDE_DIR="/opt/vc/include"
    and comment out line 19: #CROSS_COMPILE=bcm2708-
    change line 8 to this:  ARM_LIBS=/opt/vc/lib
    change line 16 to this: INCLUDES="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads"
    comment out line 19:    #CROSS_COMPILE=bcm2708-
Line 18: Line 31:
Line 19: Line 33:
Line 20: Line 35:
Line 22: Line 38:
 1. As root: {{{usermod -a -G video [your_username]}}}, this will allow you to run game as non-root. Works with other directFB/SDL based stuff, too.
1. Update your permissions for directFB access:
{{{
    sudo
usermod -a -G video [your_username]
}}}
  . Log out
, log back in. This will allow you to run game as non-root. Works with other directFB/SDL based stuff, too.
Line 24: Line 46:
 1. Depending on version of Raspbian you use, you may need to copy Broadcom libraries from /opt/vc/lib to /lib.
Line 28: Line 50:

== Troubleshooting ==
 * Compiling fails, complaining about missing {{{vcos_platform_types.h}}} file. See this issue in RasPi repository: https://github.com/raspberrypi/firmware/issues/34. (Build script was recently fixed to include correct path to missing header file. Do git pull.)

 * Game cannot find Broadcom libraries. As root do:
 {{{
    cd /etc/ld.so.conf.d/
    echo /opt/vc/lib >broadcomlib.conf
    ldconfig
}}}

 * If you get an error like "'''failed to open vchiq instance'''" you'll need to do as root:
 {{{
    echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"' > /etc/udev/rules.d/10-vchiq-permissions.rules
    usermod -a -G video [your_username]
}}}
  . Or as one time temporary solution (until reboot):
 {{{
    chmod a+rw /dev/vchiq
}}}

 * If running as a non-root user and running from the console (non X11), then quake3 may bomb out with an error message like ''''SDL_Init()'''' ''''Unable to open mouse''''. You'll need to fix permissions so that non-root user can access /dev/input/mice and /dev/input/mouse0.
  . Create new file {{{/etc/udev/rules.d/99-input.rules}}}:
 {{{
    # file /etc/udev/rules.d/99-input.rules
    KERNEL=="mice", NAME="input/%k", MODE="664", GROUP="input"
    KERNEL=="mouse*", NAME="input/%k", MODE="664", GROUP="input"
}}}
  . Add a new group and add your user(s) to it:
 {{{
groupadd input
usermod -a -G input [your_username]
}}}
  . Log out, log back in.

Building Quake 3 in Raspbian

Documentation below pulled from the Raspbian Forum. Please update this page if errors in the build process are discovered.

  1. Make sure you're up-to-date:
        sudo apt-get update
        sudo apt-get dist-upgrade
        sudo rpi-update 192
    • Reboot.
  2. Install required packages:
        sudo apt-get install git gcc build-essential libsdl1.2-dev
  3. Download the Quake 3 source code:
        mkdir ~/src
        cd ~/src
        git clone https://github.com/raspberrypi/quake3.git
        cd quake3
  4. Edit build.sh in quake3 directory:

        change line 8 to this:  ARM_LIBS=/opt/vc/lib
        change line 16 to this: INCLUDES="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads"
        comment out line 19:    #CROSS_COMPILE=bcm2708-
  5. Do a ./build.sh

  6. Wait for compilation to finish, takes about 1 hour on RasPi.

  7. Find copies of the following somewhere (other guides will show you) and place in build/release-linux-arm/baseq3:

    • pak0.pk3, pak1.pk3, pak2.pk3, pak3.pk3, pak4.pk3, pak5.pk3, pak6.pk3, pak7.pk3, pak8.pk3

  8. Update your permissions for directFB access:
        sudo usermod -a -G video [your_username]
    • Log out, log back in. This will allow you to run game as non-root. Works with other directFB/SDL based stuff, too.
  9. If you do not intend to keep Quake 3 source code, you may reorganize files as suggested by this thread on RasPi Forum.

  10. Run ioquake3.arm. Shoot things.

Highly non-scientific testing (i.e. having played a normal-Debian build a few days ago) suggests framerate is quite dramatically improved. Go Raspbian!

Troubleshooting

  • Compiling fails, complaining about missing vcos_platform_types.h file. See this issue in RasPi repository: https://github.com/raspberrypi/firmware/issues/34. (Build script was recently fixed to include correct path to missing header file. Do git pull.)

  • Game cannot find Broadcom libraries. As root do:
        cd /etc/ld.so.conf.d/
        echo /opt/vc/lib >broadcomlib.conf
        ldconfig
  • If you get an error like "failed to open vchiq instance" you'll need to do as root:

        echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"' > /etc/udev/rules.d/10-vchiq-permissions.rules
        usermod -a -G video [your_username]
    • Or as one time temporary solution (until reboot):
        chmod a+rw /dev/vchiq
  • If running as a non-root user and running from the console (non X11), then quake3 may bomb out with an error message like 'SDL_Init()' 'Unable to open mouse'. You'll need to fix permissions so that non-root user can access /dev/input/mice and /dev/input/mouse0.

    • Create new file /etc/udev/rules.d/99-input.rules:

        # file /etc/udev/rules.d/99-input.rules
        KERNEL=="mice", NAME="input/%k", MODE="664", GROUP="input"
        KERNEL=="mouse*", NAME="input/%k", MODE="664", GROUP="input"
    • Add a new group and add your user(s) to it:
    groupadd input
    usermod -a -G input [your_username]
    • Log out, log back in.