aboutsummaryrefslogtreecommitdiff
path: root/docs/README.FreeBSD.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/README.FreeBSD.md')
-rw-r--r--docs/README.FreeBSD.md486
1 files changed, 486 insertions, 0 deletions
diff --git a/docs/README.FreeBSD.md b/docs/README.FreeBSD.md
new file mode 100644
index 0000000000..4d752c670a
--- /dev/null
+++ b/docs/README.FreeBSD.md
@@ -0,0 +1,486 @@
+TOC
+1. Introduction
+2. Getting the source code
+3. Installing the required libraries and headers
+4. How to compile
+ 4.4 Binary addons
+ 4.5 Test suite
+5. How to run
+6. Uninstalling
+7. Example basic setup of a KODI machine running on FreeBSD
+ 7.1 Setting up X Server
+ 7.2 Install SLiM login manager
+ 7.3 Solving the troubles with HDMI Audio
+-----------------------------------------------------------------------------
+1. Introduction
+-----------------------------------------------------------------------------
+
+A graphics-adapter with OpenGL acceleration is highly recommended.
+24/32 bitdepth is required along with OpenGL.
+
+Note to new FreeBSD users:
+All lines that are prefixed with the '$' character are commands,
+that need to be typed into a terminal window / console. The '$' equals the prompt.
+Note: The '$' character itself should NOT be typed as part of the command.
+
+-----------------------------------------------------------------------------
+2. Getting the source code
+-----------------------------------------------------------------------------
+
+You will have to grab the source code of course, here we use git as example.
+First install the git package provided by your distribution.
+Then from a terminal, type:
+
+.0 $ cd $HOME
+.1 $ git clone git://github.com/xbmc/xbmc.git kodi
+
+Note: You can clone any specific branch.
+
+.1 $ git clone -b <branch> git://github.com/xbmc/xbmc.git kodi
+
+-----------------------------------------------------------------------------
+3. Installing the required libraries and headers
+-----------------------------------------------------------------------------
+
+You will then need the required libraries. The following is the list of packages
+that are used to build Kodi packages on Debian/Ubuntu (with all supported
+external libraries enabled).
+
+$ pkg install taglib gstreamer1-vaapi hal libcapn \
+enca gawk gperf cmake zip nasm swig30 openjdk8 libtool gettext-tools \
+gmake pkgconf rapidjson mesa-libs doxygen glproto dri2proto dri3proto libass \
+flac libcdio curl dbus fontconfig freetype2 fribidi \
+libgcrypt gmp libgpg-error gnutls libidn libinotify lzo2 \
+libogg sqlite3 tiff tinyxml e2fsprogs-libuuid git libvorbis libxslt libplist \
+shairplay avahi-app libcec libbluray samba46 libnfs librtmp libva libvdpau \
+jpeg-turbo glew xrandr libedit inputproto giflib m4 encodings \
+font-util mysql57-client xf86vidmodeproto python2 p8-platform libbdplus \
+libaacs libudev-devd sndio ccache xorg-server binutils libmicrohttpd \
+xorg-server xf86-input-mouse xf86-input-keyboard lirc libfmt autoconf automake
+
+-----------------------------------------------------------------------------
+4. How to compile
+-----------------------------------------------------------------------------
+Cmake build instructions V18.0 Leia and higher
+
+Create and change to build directory
+ $ mkdir kodi-build && cd kodi-build
+
+Run CMake
+- for X11
+ $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
+
+Compiling on FreeBSD -DENABLE_ALSA=OFF recommended. Or build would fail due to Linux
+specific portion of code in xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp. After build
+KODI would use SNDIO on FreeBSD.
+
+Build
+ $ cmake --build . -- VERBOSE=1
+
+Tip: By adding -j<number> to the make command, you describe how many
+ concurrent jobs will be used, it will speed up the build process.
+ So for quadcore the command is:
+
+ $ cmake --build . -- VERBOSE=1 -j4
+
+If the build process completes succesfully you would want to test if it is working.
+Still in the build directory type the following:
+
+ $ ./kodi.bin
+
+If everything was okay during your test you can now install the binaries to their place
+in this example "/usr/local".
+
+ $su
+ $gmake install
+ $exit
+
+NB! 'gmake' stands for 'GNU Make'. BSD's own make does not work here.
+
+This will install Kodi in the prefix provided in 4.1 as well as a launcher script.
+
+Tip: By adding -j<number> to the make command, you describe how many
+ concurrent jobs will be used. So for dualcore the command is:
+
+ $ su
+ $ gmake install -j2
+
+Tip: To override the location that Kodi is installed, use PREFIX=<path>.
+For example.
+
+ $ gmake install DESTDIR=$HOME/kodi
+
+-----------------------------------------------------------------------------
+4.4. Binary addons - compile
+-----------------------------------------------------------------------------
+
+From v14 with commit 4090a5f a new API for binary addons is available.
+You can compile all addons or only specific addons by specifying e.g. ADDONS="audioencoder.foo pvr.bar audiodecoder.baz"
+
+.0 All addons
+ $ gmake -C tools/depends/target/binary-addons PREFIX=/<system prefix added on step 4.1>
+
+.1 Specific addons
+ $ gmake -C tools/depends/target/binary-addons PREFIX=/<system prefix added on step 4.1> ADDONS="audioencoder.flac pvr.vdr.vnsi audiodecoder.snesapu"
+
+Audio decoders:
+ audiodecoder.modplug, audiodecoder.nosefart, audiodecoder.sidplay, audiodecoder.snesapu,
+ audiodecoder.stsound, audiodecoder.timidity, audiodecoder.vgmstream
+
+Audio encoders:
+ audioencoder.flac, audioencoder.lame, audioencoder.vorbis, audioencoder.wav
+
+Inputstream addons:
+ inputstream.mpd
+
+Peripheral addons:
+ peripheral.joystick
+
+PVR addons:
+ pvr.argustv, pvr.demo, pvr.dvblink, pvr.dvbviewer, pvr.filmon, pvr.hdhomerun, pvr.hts, pvr.iptvsimple,
+ pvr.mediaportal.tvserver,pvr.mythtv, pvr.nextpvr, pvr.njoy, pvr.pctv, pvr.stalker, pvr.vbox, pvr.vdr.vnsi,
+ pvr.vuplus, pvr.wmc
+
+Screensavers:
+ screensaver.asteroids, screensaver.biogenesis, screensaver.greynetic, screensaver.matrixtrails,
+ screensaver.pingpong, screensaver.pyro, screensavers.rsxs, screensaver.stars
+
+Visualizations
+ visualization.fishbmc, visualization.goom, visualization.projectm, visualization.shadertoy
+ visualization.spectrum, visualization.vsxu, visualization.waveform
+
+-----------------------------------------------------------------------------
+4.5. Test suite
+-----------------------------------------------------------------------------
+
+Kodi has a test suite which uses the Google C++ Testing Framework.
+This framework is provided directly in Kodi's source tree.
+It has very little requirements, in order to build and run.
+See the README file for the framework at 'lib/gtest/README' for specific requirements.
+
+To compile and run Kodi's test suite, type the following:
+
+ $ gmake check
+
+To compile the test suite without running it, type the following.
+
+ $ gmake kodi-test
+
+The test suite program can be run manually as well.
+The name of the test suite program is 'kodi-test' and will build in the Kodi source tree.
+To bring up the 'help' notes for the program, type the following:
+
+ $ ./kodi-test --gtest_help
+
+The most useful options are,
+
+ --gtest_list_tests
+ List the names of all tests instead of running them.
+ The name of TEST(Foo, Bar) is "Foo.Bar".
+
+ --gtest_filter=POSITIVE_PATTERNS[-NEGATIVE_PATTERNS]
+ Run only the tests whose name matches one of the positive patterns but
+ none of the negative patterns. '?' matches any single character; '*'
+ matches any substring; ':' separates two patterns.
+
+-----------------------------------------------------------------------------
+5. How to run
+-----------------------------------------------------------------------------
+
+How to run Kodi depends on the type of installation you have done.
+It is possible to run Kodi without the requirement to install Kodi anywhere else.
+In this case, type the following from the top source directory.
+
+ $ ./kodi.bin
+
+Or run in 'portable' mode
+
+ $ ./kodi.bin -p
+
+If you chose to install Kodi using '/usr' or '/usr/local' as the PREFIX,
+you can just issue 'kodi' in a terminal session.
+
+If you have overridden PREFIX to install Kodi into some non-standard location,
+you will have to run Kodi by directly running 'kodi.bin'.
+
+For example:
+
+ $ $HOME/kodi/usr/lib/kodi/kodi.bin
+
+You should still run the wrapper via
+ $ $PREFIX/bin/kodi
+
+If you wish to use VDPAU decoding you will now have to change the Render Method
+in Settings->Videos->Player from "Auto Detect" to "VDPAU".
+
+-----------------------------------------------------------------------------
+6. Uninstalling
+-----------------------------------------------------------------------------
+
+Prepend "sudo" or "doas" to commands (if installed, if not use just 'su'), if your
+user doesn't have write permission to the install directory.
+
+Note: If you have rerun configure with a different prefix,
+you will either need to rerun configure with the correct prefix for this step to work correctly.
+
+ $ gmake uninstall
+.0 $ sudo make uninstall
+
+If you would like to also remove any settings and 3rd party addons (skins, scripts, etc)
+you should also run:
+
+.1 $ rm -rf ~/.kodi
+
+-----------------------------------------------------------------------------
+7. Example basic setup of a KODI machine running on FreeBSD
+-----------------------------------------------------------------------------
+If having installed FreeBSD 'RELEASE' and not 'STABLE' or 'CURRENT, do system
+update first: (have to be 'root'). Also, if you have Radeon graphics card and
+plan using HDMI Audio, better install FreeBSD source files during installation.
+
+ $ freebsd-update fetch
+ $ freebsd-update install
+
+Update binary package repository:
+
+ $pkg update
+
+Install convenient text editor ('nano' in this case).
+
+ $pkg install nano
+
+Open /boot/loader.conf
+
+ $ nano /boot/loader.conf
+
+Add into file following rows:
+
+ kern.ipc.shmseg=1024
+ kern.ipc.shmmni=1024
+ kern.maxproc=10000
+ hint.acpi_throttle.0.disabled=1
+ machdep.disable_mtrrs=1
+ kern.cam.scsi_delay=500
+
+Open /etc/rc.conf
+
+ $ nano /etc/rc.conf
+
+Add into the beginning of a /etc/rc.conf
+
+ kld_list="radeonkms acpi_asus_wmi acpi_asus acpi_video amdtemp tmpfs libiconv msdosfs_iconv snd_driver"
+
+Brief explanation:
+
+ radeonkms - Radeon KMS driver.
+ acpi_asus_wmi - both ASUS board specific drivers.
+ acpi_asus
+ amdtemp - temperature sensor module for AMD CPU. For Intel CPU that would be 'coretemp'
+
+-----------------------------------------------------------------------------
+7.1 Setting up X server
+-----------------------------------------------------------------------------
+
+You may had some X packages during install of KODI's dependency packages but
+'xorg' is a metapackage, installing the missing bits as well.
+
+ $ pkg install xorg hal
+
+Add keyboard and mouse support
+
+ $ pkg install xf86-input-mouse xf86-input-keyboard
+
+According to your actual hardware, pick one:
+
+ $ pkg install xf86-video-ati
+ $ pkg install xf86-video-nv
+ $ pkg install xf86-video intel
+
+NB! Nvidia's driver could also be downloaded from https://www.geforce.com/drivers.
+Both FreeBSD 32-bit and 64-bit official driver exist there.
+
+Open /etc/rc.conf and add:
+
+ dbus_enable="YES"
+ hald_enable="YES"
+
+Add user running KODI into group 'video'. Necessity for having an working OpenGL
+acceleration in KODI.
+
+ $ pw groupmod video -m kodiuser
+
+-----------------------------------------------------------------------------
+7.2 Install SLiM login manager
+-----------------------------------------------------------------------------
+
+ $ pkg install slim
+ $ nano /etc/rc.conf
+
+Add:
+
+ slim_enable="YES"
+
+NB! Has to be below 'dbus_enable="YES"' and 'hald_enable="YES"' entries in the file.
+
+Open SLiM configuration file.
+
+ $ nano /usr/local/etc/slim.conf
+
+Edit until it looks like:
+
+ default_path /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin
+ default_xserver /usr/local/bin/X
+ xserver_arguments -nolisten tcp vt09
+ halt_cmd /sbin/shutdown -p now
+ reboot_cmd /sbin/shutdown -r now
+ console_cmd /usr/local/bin/xterm -C -fg white -bg black +sb -T "Console login" -e /bin/sh -c "/bin/cat /etc/motd; exec /usr/bin/login"
+ suspend_cmd /usr/sbin/acpiconf -s 3
+ xauth_path /usr/local/bin/xauth
+ authfile /var/run/slim.auth
+ login_cmd exec /bin/sh - ~/.xinitrc %session
+ sessiondir /usr/local/share/xsessions
+ screenshot_cmd import -window root /slim.png
+ default_user kodi #or whatever user was chosen
+ auto_login yes
+ current_theme default
+ lockfile /var/run/slim.pid
+ logfile /var/log/slim.log
+
+
+Exit root user and log into user you plan to run KODI with:
+create .xinitrc file into it's home directory
+
+ $touch .xinitrc
+
+Add into it:
+
+ exec /usr/local/bin/kodi
+
+Log out of normal user, back to 'root' and add package 'doas' (something like sudo)
+
+ $ pkg install doas
+
+Edit it's config
+
+ $ nano /usr/local/etc/doas.conf
+
+Add into file following rows:
+
+ permit persist :wheel #assuming group 'wheel' has user
+ permit nopass kodi as root cmd reboot
+ permit nopass kodi as root cmd shutdown
+
+It will allow KODI user basic ability to shut down/reboot machine without needing
+privilege escalation. To complete it.
+
+ $ pkg install upower
+
+
+Create file
+
+ $ nano /usr/local/etc/polkit-1/localauthority/50-local.d/custom-actions.pkla
+
+
+Add into it:
+
+ [Actions for KODI users]
+ Identity=kodi:kodi
+ Action=org.freedesktop.upower.*
+ ResultAny=yes
+ ResultInactive=yes
+ ResultActive=yes
+
+On restart (assuming you meanwhile also installed KODI itself), machine should:
+
+-start SLiM
+-autologin with user kodi (or whatever was chosen)
+-autostart KODI
+
+For the rest: FreeBSD has excellent documentation:
+https://www.freebsd.org/doc/handbook/
+
+And active forum you can ask advice from:
+https://forums.freebsd.org/
+
+-----------------------------------------------------------------------------
+7.3 Solving the troubles with HDMI Audio.
+-----------------------------------------------------------------------------
+
+Nvidia graphics.
+
+ $ pkg install nvidia-driver nvidia-xconfig
+
+Add into /boot/loader.conf rows:
+ snd_hda_load="YES"
+ nvidia_load="YES"
+ hw.snd.default_unit="0" #ID could be something else besides 0. If it is,
+ #correct it accordingly
+
+You can find it by:
+
+ $ cat /dev/sndstat
+
+After saving the /boot/loader.conf you can force the change in live using
+
+ $ sysctl hw.snd.default_unit=0 (or whatever number your particular machine's
+ 'cat's would make you choose).
+ $ kldload nvidia
+ $ kldload snd_hda
+
+or just reboot..
+
+
+Radeon graphics.
+First check that HDMI sound output and active sound device in system would be
+both the same.
+
+ $ cat /dev/sndstat
+ $ sysctl -a | grep hw.snd.default_unit
+
+For example:
+If former shows:
+
+ pcm0: <ATI R6xx (HDMI)> (play)
+ pcm1: <Realtek ALC269 (Right Analog)> (play/rec) default
+ pcm2: <Realtek ALC269 (Internal Analog)> (play/rec)
+ No devices installed from userspace.
+
+and latter:
+
+ hw.snd.default_unit: 1
+
+
+then you should give command:
+
+ $ sysctl hw.snd.default_unit=0
+
+
+Assuming you did install system sources during installation (you better have!)
+Open and find:
+
+ int radeon_audio = 0;
+
+From:
+
+ $ nano /usr/src/sys/dev/drm2/radeon/radeon_drv.c
+
+Change it to:
+
+ int radeon_audio = 1;
+
+Save the file, close the editor. Then
+
+ $ cd /usr/src
+ $ make buildkernel
+
+Wait until Clang/LLVM finish.
+
+ $make installkernel
+
+Reboot and now your Radeon's HDMI Audio should function properly.
+
+
+Intel iGPU. Problem may be in wrong output ID. Find it, correct
+it in a similar manner like demonstrated in examples above.
+
+EOF