site  contact  subhomenews

Linux kernel 4.18.8 compiled

September 17, 2018 — BarryK

I have compiled this kernel in EasyOS x86_64 "Easy Beaver" version 0.9.2.99, which is EasyOS built from Ubuntu Bionic Beaver (18.04.1 LTS) DEB packages. This is an in-house version, the next official release is likely to be 0.9.3.

The kernel source, patches and build scripts are here:

http://distro.ibiblio.org/easyos/source/kernel/4.18.8/

The intention is to use this kernel for the next official releases of Easy Beaver (EasyOS) and Quirky Beaver (Quirky). Might release them simultaneously.

Tags: easy, quirky

Locator map and satellite viewer

September 12, 2018 — BarryK

Puppy Forum member Geoffrey has created this great frontend for Google Maps:

http://murga-linux.com/puppy/viewtopic.php?t=97622&start=30

It only needs 'yad' and 'gtkdialog', so is a tiny PET package, and will work in all pups.

There was a problem with recent versions of librsvg, now fixed. The fixed PET, with a few small tweaks, is here (9.4KB):

http://distro.ibiblio.org/easyos/noarch/packages/pet/pet_packages-noarch/locator-3.7.2.pet

My tweaks are tiny: it was in the Utility menu, and looked out-of-place, so I moved it to Network -> utility, which is a tad better, but also the Network category in the menu is very under-populated.

I also changed the 'pet.specs' file to show the deps "+yad,+gtkdialog".

The dep 'yad' can be found in the PPM (Package Manager), if not already installed (type "which yad" in a terminal to find out).

Locator will be in next release of EasyOS and Quirky.

Tags: easy, quirky

EasyOS 0.9.6.3 64-bit on Raspberry Pi

September 05, 2018 — BarryK

Yep, EasyOS has been compiled for ARM aarch64 and is now running on the Raspberry Pi3. This is the "Pyro" series, compiled from source in 'oe-qky-src', my fork of OpenEmbedded (OE). The binary packages are then used in woofQ, to build EasyOS.

First, I built Quirky Linux in OE and created SD-cards for both RPI3 and Rock64 boards. Quirky is the same binary packages as used to build EasyOS, the difference is that Quirky is designed as a conventional "full" installation.

As the Rock64 has 4GB RAM and a USB3 socket, it is more suitable as a compiling platform. I compiled the kernel for the Pi -- I had to compile my own kernel, as it requires aufs patch, and aufs and squashfs drivers to be builtin.

I also compiled SeaMonkey, Scribus, and some other apps.

The aarch64 compile in OE is generic, without any particular optimization for video hardware acceleration. Therefore, we cannot expect stellar performance when playing videos.

Version 0.9.6.3 is the first build for the Pi, and has had cursory testing. I checked the main apps, and they are OK. Well, mostly. Going to youtube.com with SeaMonkey is not a good experience -- it can't play much more than 360p, and I locked the browser a few times.

Interesting to contrast with the Rock64, which played up to 720p, but it looked like some frames were getting dropped.

If anyone takes a liking to EasyOS on the Pi, you are welcome to have a go at tweaking it. Just click the "sfsget" icon at top of screen to download the "devx" file, which will turn Easy into a complete compiling environment. There is also a kernel source SFS file, if you want to compile a kernel module.

There are some features of EasyOS that are works-in-progress, especially EasyShare and EasyContainers. On the desktop, there is an icon labeled "desk", which is a complete desktop in a container -- this works, though playing with it on the Pi I did manage to crash the file manager.

Read more about EasyOS here:

http://bkhome.org/easy/

Also tagged posts in my blog:

http://bkhome.org/news/tag_easy.html

Download the image file for SD-card:

http://distro.ibiblio.org/easyos/aarch64/releases/pyro/0.9.6.3/

The image file is gzipped, which Windows apps such as Etch understand. Here is information how to write the file to a SD-card:

http://bkhome.org/easy/how-to-write-easyos-to-a-flash-drive.html

The file is only 641MB when uncompressed, and at first bootup will expand to fill the entire SD-card. Any card from 2GB up will work, though 8GB or more is recommended for ongoing usage.

If you want to directly download the SFS files, they are here:

http://distro.ibiblio.org/easyos/aarch64/packages/sfs/pyro/

Kernel source, patches and build scripts are here:

http://distro.ibiblio.org/easyos/source/kernel/4.14.67/

I intend to start a Forum thread for feedback, and post the link here. That's if anyone is interested!

Tags: easy

LittlevGL evaluation part 3

August 23, 2018 — BarryK

Progress! Parts 1 and 2 are here:

http://bkhome.org/news/201808/first-go-at-evaluating-littlevgl.html

http://bkhome.org/news/201808/tentative-first-step-framebuffer-with-littlevgl.html

I didn't know how to get the mouse working without X, so posted a question to the developer's site:

https://github.com/littlevgl/lvgl/issues/374

Now have a window with buttons, and a mouse! Furthermore, it is compiled statically with uClibc and the executable is 217KB -- bigger than it needs to be as have included more modules than actually used.

I used my fork of Landley's uClibc-based Aboriginal chrootable filesystem:

http://distro.ibiblio.org/easyos/project/aboriginal/

...follow the instructions, and you will end up with a filesystem folder that you can chroot into.

LittlevGL is the pc-simulator tarball, as explained in the earlier posts. But first, the exciting part... I excited from X and executed 'demo":

image

The "mouse pointer" is that little power-button symbol, don't yet know how to create a proper image. I can move the pointer over a button, click, and get output on the screen. Yay!

My changes to 'lv_conf.h':

#define LV_COLOR_DEPTH     24                     /* BKColor depth: 1/8/16/24*/

Changes to 'lv_drv_conf.h':

#define USE_FBDEV           1
...
#define USE_EVDEV 1

Here is my 'Makefile':

#
# Makefile
#
CC = gcc
#CFLAGS = -Wall -Wshadow -Wundef -Wmaybe-uninitialized
CFLAGS = -Wall -Wshadow -Wundef
CFLAGS += -O3 -g3 -I./
#LDFLAGS += -lSDL2 -lm
BIN = demo
VPATH =
LDFLAGS = -static

LVGL_DIR = ${shell pwd}

MAINSRC = main.c

#LIBRARIES
include ./lvgl/lv_core/lv_core.mk
include ./lvgl/lv_hal/lv_hal.mk
include ./lvgl/lv_objx/lv_objx.mk
include ./lvgl/lv_misc/lv_fonts/lv_fonts.mk
include ./lvgl/lv_misc/lv_misc.mk
include ./lvgl/lv_themes/lv_themes.mk
include ./lvgl/lv_draw/lv_draw.mk

#DRIVERS
include ./lv_drivers/display/display.mk
include ./lv_drivers/indev/indev.mk

OBJEXT ?= .o

AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))

MAINOBJ = $(MAINSRC:.c=$(OBJEXT))

SRCS = $(ASRCS) $(CSRCS) $(MAINSRC)
OBJS = $(AOBJS) $(COBJS)

## MAINOBJ -> OBJFILES

all: clean default

%.o: %.c
@$(CC) $(CFLAGS) -c $< -o $@
@echo "CC $<"

default: $(AOBJS) $(COBJS) $(MAINOBJ)
$(CC) -o $(BIN) $(MAINOBJ) $(AOBJS) $(COBJS) $(LDFLAGS)

clean:
rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)
Here is my 'main.c':
#include "lvgl/lvgl.h"
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"
#include <unistd.h>
#include <stdio.h>

//Add a display for the LittlevGL using the frame buffer driver
void register_display(void)
{
lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
disp_drv.disp_flush = fbdev_flush; //It flushes the internal graphical buffer to the frame buffer
lv_disp_drv_register(&disp_drv);
}

static lv_res_t btn_click_action(lv_obj_t * btn)
{
uint8_t id = lv_obj_get_free_num(btn);

printf("Button %d is released\n", id);

/* The button is released.
* Make something here */

return LV_RES_OK; /*Return OK if the button is not deleted*/
}

int main(void)
{
/*LittlevGL init*/
lv_init();

/*Linux frame buffer device init*/
fbdev_init();

// get a display
register_display();

// enable event input
evdev_init();

// get an input device like mouse
lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv);
indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read = evdev_read;
// lv_indev_drv_register(&indev_drv);

lv_indev_t * mouse_indev = lv_indev_drv_register(&indev_drv);

lv_obj_t * cursor_obj = lv_img_create(lv_scr_act(), NULL); /*Create an image for the cursor */
lv_img_set_src(cursor_obj, SYMBOL_POWER); /*For simlicity add a built in symbol not an image*/
lv_indev_set_cursor(mouse_indev, cursor_obj); /* connect the object to the driver*/


/*Create a title label*/
lv_obj_t * label = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(label, "Default buttons");
lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 5);

/*Create a normal button*/
lv_obj_t * btn1 = lv_btn_create(lv_scr_act(), NULL);
lv_cont_set_fit(btn1, true, true); /*Enable resizing horizontally and vertically*/
lv_obj_align(btn1, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
lv_obj_set_free_num(btn1, 1); /*Set a unique number for the button*/
lv_btn_set_action(btn1, LV_BTN_ACTION_CLICK, btn_click_action);

/*Add a label to the button*/
label = lv_label_create(btn1, NULL);
lv_label_set_text(label, "Normal");

/*Copy the button and set toggled state. (The release action is copied too)*/
lv_obj_t * btn2 = lv_btn_create(lv_scr_act(), btn1);
lv_obj_align(btn2, btn1, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
lv_btn_set_state(btn2, LV_BTN_STATE_TGL_REL); /*Set toggled state*/
lv_obj_set_free_num(btn2, 2); /*Set a unique number for the button*/

/*Add a label to the toggled button*/
label = lv_label_create(btn2, NULL);
lv_label_set_text(label, "Toggled");

/*Copy the button and set inactive state.*/
lv_obj_t * btn3 = lv_btn_create(lv_scr_act(), btn1);
lv_obj_align(btn3, btn2, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
lv_btn_set_state(btn3, LV_BTN_STATE_INA); /*Set inactive state*/
lv_obj_set_free_num(btn3, 3); /*Set a unique number for the button*/

/*Add a label to the inactive button*/
label = lv_label_create(btn3, NULL);
lv_label_set_text(label, "Inactive");

/*Handle LitlevGL tasks (tickless mode)*/
while(1)
{
lv_tick_inc(5);
lv_task_handler();
usleep(5000);
}

return 0;
}
What we have now is a great jumping-off point for creating useful apps.

Tags: linux, easy

EasyOS 32-bit version 0.9.6

August 22, 2018 — BarryK

A couple of people have recently asked me whether I will be releasing a 32-bit EasyOS. I wasn't going to, as have been attempting to be more focused in the development. However, a 32-bit, i686, build does not take much extra effort, a couple of days.

Most of the packages are compiled automatically in my fork of OpenEmbedded. Some, such as SeaMonkey and the kernel, I still have to compile manually. Have not ported all the Qt5 apps into OE either.

I have left Qt5 and the Qt5-apps out of this build. The two main ones are Scribus desktop publishing and Symhytum simple database, both of which are in the 64-bit 0.9.6 release.

If there are any peculiarities to it, specific to being 32-bit, I can't give that much attention. I just did a quick run through the apps and utilities, they seem to be functional. I get a nice desktop, looks good. Still on the "green" theme.

Bootup is not UEFI-aware, it is for legacy booting, intended for ye olde computers prior to 2012. Though, with 4.14.65 kernel, should boot up on recent PCs. 4GB RAM limit!

Though, it might be 32-bit UEFI-aware, if you have one of those.

So, if you want a i686 EasyOS, here it is:

http://distro.ibiblio.org/easyos/x86/releases/pyro/0.9.6/

There are some release notes at the 64-bit 0.9.6 announcement:

http://bkhome.org/news/201808/easyos-version-096-released.html

Forum feedback will be in the same thread:

http://murga-linux.com/puppy/viewtopic.php?t=109958 

Tags: easy

EasyShare supports Android phone via USB

August 13, 2018 — BarryK

I posted recently about Android utilities being included in future EasyOS and Quirky releases:

http://bkhome.org/news/201808/android-tools-and-adbfs-rootless-in-oe.html

EasyShare is now using these utilities and supports file sharing via an Android phone connected by USB cable.

The main GUI now has a checkbox "Android USB", and it is very simple to use. Here is a snapshot:

image

The only slight difficulty, very slight, is that Developer mode and USB debugging have to be turned-on on the phone. The phone is automatically discovered, and it is just a matter of clicking the "Mount" button. 

I have updated the EasyShare tutorial page:

http://bkhome.org/easyapps/easyshare-super-easy-network-file-and-printer-sharing.html   

Tags: easy, quirky

adb connection to phone over wifi

August 09, 2018 — BarryK

I posted yesterday about using 'adb' and 'adbfs' over usb to browse files on my Android phone:

http://bkhome.org/news/201808/android-tools-and-adbfs-rootless-in-oe.html

Briefly mentioned that it could be done over wifi as well. Yes, this site has a nice explanation:

https://futurestud.io/tutorials/how-to-debug-your-android-app-over-wifi-without-root

It does require a one-time usb connection to enable the phone to listen on port 5555. With usb-debugging enabled on the phone and usb cable connected to PC, on the PC:

# adb devices
...this will confirm the connection
# adb shell "ip route"
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.8
...192.168.1.8 is the ip-address of the phone.
# adb tcpip 5555
...starts the phone listening on port 5555

Then unplug the usb cable, and on the PC:

# adb connect 192.168.1.8:5555
# adb shell "ls /sdcard"
...will list folders and files on phone
# adbfs /mnt/phone
...can browse the files
# fusermount -u /mnt/phone

Yeah it works, but not very secure. Port 5555 stays open until the phone is rebooted. adbfs is a simple method, but reckon will restrict to only doing it via usb cable.

Tags: easy, quirky, linux

EasyShare now using fakeidentd

August 07, 2018 — BarryK

I posted about the rewrite of EasyShare a few days ago:

http://bkhome.org/news/201808/easyshare-file-and-printer-sharing-re-written.html

Which appeared in EasyOS 0.9.6 released a couple of days ago.

Then yesterday, examined using fakeidentd server for network discovery:

http://bkhome.org/news/201808/easyshare-probing-computers-to-obtain-hostnames.html

Puppy Forum member 'step', a longtime contributor on the forum, sent me a pm about another way to query fakeidentd, using 'telnet'. Like this:

# { printf \\n; sleep 1; } | telnet 192.168.1.4 113

Busybox has a telnet applet, though my current configuration of busybox does not have it.

Very nice, thanks very much for that info. As I have the 'ident-user-enum.pl' perl script working, staying with that for now. EasyShare is now modified to use fakeidentd, and I have tested, works great.

Running 'easyshare' from a terminal, noticed an error message, although the sshfs connection worked:

do_known_hosts: hostkeys_foreach failed: No such file or directory

It was a one-off message, I discovered because folder /root/.ssh did not exist. Fixed.

Tags: easy, quirky