jimsynz

jimsynz

Ash Core Team

Scenic driver for fbcon?

Hi folks.

I’ve spent more than a few evenings fiddling around to get a custom system built that enables the st7789v display via the Linux fbtft driver as the console and the “hifiberry” DAC on the pirate audio board that I’m using.

Here’s a photo because it’s awesome:

The next step of the project is to start working on a Scenic based UI for the device. I’ve just tried throwing scenic_driver_nerves_rpi at it to see what happens, and while it seems to load and start correctly nothing is displayed on the console.

Currently installed is scenic 0.10.5 and scenic_driver_nerves_rpi 0.10.1.

The configuration is:

config :podbox, :viewport, %{
  name: :main_viewport,
  size: {240, 240},
  default_scene: Podbox.Scene.Main,
  drivers: [
    %{
      module: Scenic.Driver.Nerves.Rpi
    }
  ]
}

And the default scene is:

defmodule Podbox.Scenes.Main do
  use Scenic.Scene
  alias Scenic.Graph
  import Scenic.Primitives
  import Scenic.Components

  @graph Graph.build()
         |> text("Hello, World!", font_size: 22, translate: {20, 80})

  def init(_scene_args, _opts) do
    {:ok, %{graph: @graph}, push: @graph}
  end
end

Running Scenic.ViewPort.info(:main_viewport) returns:

{:ok,
 %Scenic.ViewPort.Status{
   drivers: %{
     #PID<0.2941.0> => %Scenic.ViewPort.Driver.Info{
       module: Scenic.Driver.Nerves.Rpi,
       type: "Static Monitor",
       id: nil,
       width: 1996092956,
       height: 1993753600,
       pid: #PID<0.2941.0>,
       private: nil
     }
   },
   root_config: {Podbox.Scene.Main, nil},
   root_graph: {:graph, Podbox.Scene.Main, nil},
   root_scene_pid: Podbox.Scene.Main,
   size: {240, 240},
   styles: %{},
   transforms: %{}
 }}

Does anyone have any idea what might be going wrong?

Most Liked

jimsynz

jimsynz

Ash Core Team

Thanks for the update. Yeah, this is the direction I went down to finally get it working.

I wound up pulling scenic_driver_local from main and setting SCENIC_LOCAL_TARGET=cairo-fb. The only catch being that it expects to address the framebuffer on /dev/fb0 but my display is listed as /dev/fb1. In the mean time I have symlinked it, but I’ve also raised an issue asking for it to be made configurable. I think this means that this method will also work for any of the dozens of displays that are supported by fbtft without the need for custom scenic driver packages. Great news!

jimsynz

jimsynz

Ash Core Team

Well I haven’t solved my scenic issue, but I wanted to share a photo of it in it’s case that I designed. so much fun in such a small package!

jimsynz

jimsynz

Ash Core Team

I upgraded scenic to 0.11 and switched to scenic_driver_local. No luck so far.

Where Next?

Popular in Questions Top

_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
mgjohns61585
Could someone help me? I’m making my first elixir program, number guessing game. I can’t figure out how to convert the user’s guess from ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
vac
Hi, I’m quite new in Elixir and I’m trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and I...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New

Other popular topics Top

axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 48475 226
New
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID&lt;0.412.0&gt; terminating ** (Postgrex.Error) FATAL...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New

We're in Beta

About us Mission Statement