Squeezelite / Jivelite on Pine64 nearing usable state

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Learnincurve
    Senior Member
    • Sep 2015
    • 218

    Squeezelite / Jivelite on Pine64 nearing usable state

    Hi,

    I'm posting this as s new thread, as I have a number of running question threads out regarding the project.

    Status update:
    The system is now a beta release. I have now progressed to the point that I think and hope that the system can be used (at least for people who know what they are doing and with a USB DAC), as core functionality seems to be stable and working.

    I'm therefore posting what I have done here and will update with links to files. If anyone wants to try the same and contribute to improving it, please feel free. The hardware is cheap compared with Raspberry Pi and has some advantages (especially regarding USB implementation).

    As I will only be using it to output to USB DAC and will connect through Ethernet, so have removed a certain amount of support from the kernel. Building a custom kernel is relatively easy using the Armbian build system, if you need other modules.
    Last edited by Learnincurve; 2017-03-01, 20:21.
  • Learnincurve
    Senior Member
    • Sep 2015
    • 218

    #2
    What I did

    Hardware spec:

    Pine64+ (2GB) with official LCD screen and C4 labs surround

    Modified surround:
    • glued screen into front bezel
    • countersunk m3, flathead bolts
    • ordered custom aluminium stand to hold device in "alarm-clock" position (not yet delivered/mounted)
    • 5v Power supply through EULER connection pins



    Planned mod (not yet implemented):


    Base system: Armbian pine64 legacy / Ubuntu Xenial Desktop on Samsung Evo+ 32GB

    • apt installed:
      libsdl2-dev libsdl1.2-dev liblua5.1-dev liblua5.2-dev libluajit-5.1-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libexpat1-dev libtool libtool-bin liblua5.4-dev liblua5.3-dev

    • apt removed:
      blueman bluez bluex-obexd bluez-tools bluetooth libreoffice* openoffice.org-hyphenation firefox:armhf






    LIST][*]built and installed squeezelite from
    https://github.com/avafinger/pine64-touchscreen[*]configured xorg.conf to use tslib[/LIST]

    • Built minimal kernel, with performance governor default, removed builtin snd_usb_audio and hid and compiled as loadable modules (necessary for DAC detection).
    • Much removed: including Wifi, Bluetooth, Filesystems and network protocols that I will not used.
    • dpkg installed using technique described at:
      https://www.armbian.com/pine64/ > Kernels > Default




    jivelite-autoload:
    • Modified /etc/default/nodm to disable mouse cursor:
      Code:
      # Options for the X server
      NODM_X_OPTIONS='-nolisten tcp -nocursor'




    Enable GPIO pin and allow to accept input from autologin user (for jivelite screensaver):
    • edit /etc/rc.local -
      Code:
      #allow squeezer user to set screen brightnes
      echo 362 > /sys/class/gpio/export && chgrp squeezer /sys/class/gpio/export && chmod 220  /sys/class/gpio/export
      sleep 1
      echo out > /sys/class/gpio/gpio362/direction && chgrp squeezer /sys/devices/soc.0/1f02c00.pinctrl/gpio/gpio362/direction && chmod 664 /sys/devices/soc.0/1f02c00.pinctrl/gpio/gpio362/direction
      sleep 1
      chgrp squeezer /sys/devices/soc.0/1f02c00.pinctrl/gpio/gpio362/value && chmod 664 /sys/devices/soc.0/1f02c00.pinctrl/gpio/gpio362/value
      exit 0


    • Created ~/.xsessionrc for autologin user:
      Code:
      #!/bin/sh
      sleep 2 && exec /opt/jivelite/bin/jivelite #sleep to allow LCD backlight settings to take effect





    Modified jivelite:
    • resized some wallpapers to 1024x600 resolution and modified wallpaper loader

    • Included LCD screen backlight off/on to:
      BlankScreenSaverApplet.lua

    • Tuned text scrolling by changing refresh rate and scrolling values, for smoother scroll.


    Working:
    • System boots
    • Squezelite loads
    • Jivelite loads
    • 1024x600 skins mostly look nice (much work done by Ralphy since this thread was first announced). Thanks to Ralphy
    • Connects to LMS running in local network
    • "Plays" local and streaming content.
    • Blank screensaver works well and turns off LCD backlight
    • Touchscheen works well if jivelite runnning in context of autologin user
    • Gb ethernet works well and correctly.
    • PCM playback tested and working up to 24b@384k




    Not yet implemented:
    • USB audio out tweaks as discussed at:
    • https://ubuntuforums.org/showthread.php?t=1608913
    • working, fully patched RT kernel (reverted to standard, low latency kernel)
    • 3.13 USB improvements patch backported to 3.10.104
    • PWM management of LCD backlight brightness




    Known issues:
    • Jivelite scrolling text is still slightly jumpy.
    • Some screensavers (analog clock) not optimised for 1024x600 resolution.
    • Some graphics not positioned correctly on 1024x600 resolution
    • Can't get touchscreen to work if loading jivelite as root (even with tslib_test behaving correctly and loading with tslib environment variables)
    • Jivelite splashscreen not correctly centered when running in context of autologin user (looks better when loading from root shell).
    • Top LH "stop" button in jivelite UI works, but if a "stop" screensaver is configured, touch does not wake the screen
    • DSD (native) playback is being silently converted to PCM on my system due to non-XMOS dac and (probably) kernel 3.10 It still sounds good, but this is not native DSD. I have ordered a XMOS DAC and will look at ways to backport the native DSD support from a later kernel if Armbian can't supoort the LCD on 4.x before I'm done.
    Last edited by Learnincurve; 2017-03-03, 09:51. Reason: corrections

    Comment

    • Learnincurve
      Senior Member
      • Sep 2015
      • 218

      #3
      Files available at:



      32GB sdcard image
      pwd: Pine64

      Comment

      • Videopac
        Member
        • Dec 2016
        • 49

        #4
        Originally posted by Learnincurve
        Hardware spec:
        Thanks for your post, you've done a lot of good work.
        It seems that this link is not working.
        I am especially interested in an aarch64 version of luajit, as I would like to build a touch screen all-in-one mediaplayer based on an Odroid C2.
        Can you enlighten me on what you did? / have you found a working aarch64 version of luajit?
        2x Touch, working on a Odroid-C2/Soekris-DAC/Hypex-Ncore all-in-one solution.

        Comment

        • Learnincurve
          Senior Member
          • Sep 2015
          • 218

          #5
          Originally posted by Videopac
          Thanks for your post, you've done a lot of good work.
          It seems that this link is not working.
          I am especially interested in an aarch64 version of luajit, as I would like to build a touch screen all-in-one mediaplayer based on an Odroid C2.
          Can you enlighten me on what you did? / have you found a working aarch64 version of luajit?
          Sorry about the links and thanks for pointing-out. I'll go back and correct them now. Just delete the /archive/ from the end of the URL's rest should be working.

          Same problem with LuaJIT link.

          Working on arm64 for me.

          Good luck with your project.

          Comment

          • Learnincurve
            Senior Member
            • Sep 2015
            • 218

            #6
            Update:

            Latest jivelite supports 1024x600 resolution out of the box. No skin patching required.

            1024x600 wallpapers and patch now available on Google Drive

            You will still need to patch the BlankScreensaver applet to turn off the LCD when blank.
            Last edited by Learnincurve; 2017-02-22, 14:49.

            Comment

            • Learnincurve
              Senior Member
              • Sep 2015
              • 218

              #7
              Update:

              New kernel deb's and DSD-capable squeezelite compiled from:


              thanks to Marco Curti

              on google drive.

              Tested with new kernel and squeezelite, bit-perfect playback of PCM up to 384k@24bit and DSD256 is working into my USB DAC.

              Notes:
              • The previous kernel had issues finding the DAC due to SND_USB_AUDIO and HID support being compiled in rather than modular, so you will need to replace the kernel if your DAC is not picked up.
              • For PCM and DoP, the packaged squeezelite is fine, but you will need the home-compiled version (remove the package), if you want to support native output of DSD streams.
              Last edited by Learnincurve; 2017-03-01, 20:46.

              Comment

              • Learnincurve
                Senior Member
                • Sep 2015
                • 218

                #8
                NOTE on DSD!!!

                For me, the version of squeezelite from yesterday doesn't handle dsd256, whereas the version from the day before does. For anyone who downloaded the latest Image and who needs to be able to play DSD256 files, please change the symlink in /opt to point to the older version.
                NOTE: For me, with my DAC, neither of the squeezelite builds are passing a true DSD stream. This is due to limitations in ALSA, due both to the kernel version that we are still forced to use with the Pine64 and that Native DSD is, for the moment at least, limited to XMOS-based DACS.
                Last edited by Learnincurve; 2017-03-03, 09:55.

                Comment

                • Videopac
                  Member
                  • Dec 2016
                  • 49

                  #9
                  As I'm new to Linux and building packages myself: can you let me know what exactly you did to get Luajit working on your Pine64.
                  I have no idea what to do to get it working on my Odroid C2.
                  I really do like the hw specs of the C2, but the almost complete lack of support is quite a disapointment to me.
                  2x Touch, working on a Odroid-C2/Soekris-DAC/Hypex-Ncore all-in-one solution.

                  Comment

                  Working...