Syndicate
Site (RSS, Atom)
Contact
Weblog status
Total entries: 71
Last entry: 2019-09-22 22:47:24
Last updated: 2019-09-22 23:55:39
powered by vim, bash, cat, grep, sed, and nb 3.4.2

2019-09-22 22:47:24

ODROID GO as network tool

Hardkernel's ODROID GO handheld game kit is well known for his ability to emulate Gameboy and many more game consoles as also for ports of games like 3D Wolfenstein or Doom.

But with his versatile peripheral hardware like e.g. WiFi, Bluetooth and his expansion port with GPIO pins it allows a wide range of applications. Example applications with external hardware are a Weather Station and an Ultrasonic Distance Meter.

Programming is easy with the Arduino IDE even for novices. A lot of libraries are already available because ORDROID GO is based on the widely used ESP32 platform.

As first application I started developing of a "WiFi/network tool". Currently it can do some network tests and light configuration changes in our network. This is an example screenshot:

screenshot wific application

The Wifi connection works very well even through some walls. This Proof Of Concept is already very useful and I will continue to enhance it.


Posted by Frank W. Bergmann | Permanent link | File under: c, embedded, networking

2019-09-20 23:22:47

Workaround for Unity installation issue "not enough space"

Some days ago my son told me that he had an issue on installing Unity via UnityHubSetup on Linux: Even with specifying TMPDIR and selecting home partition as installation target the installer did still show the (low) free disk space of the root partition.

There are several pages about this topic but apparently there's no easy solution for this issue. I told him that (assuming that you actually have enough free disk space) the disk space can be "faked" by pre-loading a shared library where the statfs() calls are wrapping the system calls and are "faking" the results.

As Proof-of-Concept and for educational purposes I wrote this fake library and a small shell script to control the Unity installer and the lib. A small issue is that the executable UnityHubSetup.AppImage is actually unpacking some kind of image and then starting the actual installer from this image. As a solution my script will launch UnityHubSetup.AppImage to get the image unpacked, then terminate UnityHubSetup.AppImage and finally start the real installer with the fake library preloaded. That causes the installer window flashing one time and then opening up finally.

Script and fake lib as archive: unityhubsetup-fake-diskspace.tar.gz

Content of the archive:

$ ls -1 unityhubsetup-fake-diskspace
README
launch-uhs-with-faked-increased-diskspace.sh
wrap_statfs.c
wrap_statfs.so

Some technical details: The actual free space is multiplied with a constant factor...

$ grep -B3 'resize_factor =' wrap_statfs.c 
/**
 * multiply free space with resize_factor
 */
static const int resize_factor = 16;

... and this is an implementation of a faked call:

$ fgrep -A9 'int statfs(' wrap_statfs.c 
int statfs(const char *path, struct statfs *buf) {
  int result;
  write(2, MESSAGE_STATFS, (sizeof MESSAGE_STATFS) - 1);
  actual_statfs = dlsym(RTLD_NEXT, "statfs");
  result = actual_statfs(path, buf);
  if (result == 0) {
    SET(buf->f_blocks, buf->f_bfree, buf->f_bavail);
  }
  return result;
}

Posted by Frank W. Bergmann | Permanent link | File under: c, shell

2019-08-31 16:34:26


Posted by Frank W. Bergmann | Permanent link | File under: rpm, repository, redhat

2019-07-21 21:42:04

Intel/Altera Quartus FPGA suite RPM repository

Intel/Altera Quartus is a software suite for FPGA development. Unfortunately it has some nasty dependencies on old packages. Intel says that Quartus is intended to be run on RHEL / CentOS 6 and some library dependencies confirm this. But there's also a dependency on libssl.so.6 which is actually OpenSSL 0.98 which was not used in RHEL 6 but in RHEL 5.

I created an RPM spec file for building a quartus RPM package from the tar file and I also created some packages to resolve dependencies:

  • quartus-spec
  • libpng12
  • libudev0
  • ncurses57-libs
  • openssl0
  • zeromq3

Depending on the OS your are using it could be that ncurses57 is not required. On e.g. Fedora 28 the dependency can be resolved by package ncurses-compat-libs. Don't be confused by ncurses being installed two times: Quartus requires the 64 bit and also the 32 bit version of libncurses.so.5.

My repository also provides usb-blaster-udev which installs a rules file to provide a symlink to an USB Blaster I/II device and also sets the permissions to enable dialout group members to use this device:


# ls -l /dev/*blaster*
lrwxrwxrwx 1 root root 15 Jul 21 22:56 \\
    /dev/usb-blaster -> bus/usb/001/017
# ls -l /dev/bus/usb/001/017
crw-rw-r-- 1 root dialout 189, 16 Jul 21 22:56 \\
    /dev/bus/usb/001/017

The repo does not provide a full Quartus RPM due to license and size reasons. But the provided RPM spec file can be used to build a Quartus RPM package by your own. You only need the Quartus 18.1 tar file and this spec file for doing that. The spec file supports two build options:

  • --with fullinstall: install all components, package default: only Cyclone IV
  • --with checkmd5: verify tar file MD5 checksum

Here's is an example installation of a Quartus RPM built this way:

# rpm -U quartus-18.1.0.625-4.fc28.x86_64.rpm
error: Failed dependencies:
 /bin/csh is needed by quartus-18.1.0.625-4.fc28...
 libcrypto.so.6()(64bit) is needed by quartus-18.1.0.625...
 libncurses.so.5 is needed by quartus-18.1.0.625-4.fc28...
 libncurses.so.5()(64bit) is needed by quartus-18.1.0.625...
 libpanel.so.5()(64bit) is needed by quartus-18.1.0.625...
 libpng12.so.0()(64bit) is needed by quartus-18.1.0.625...
 libpng12.so.0(PNG12_0)(64bit) is needed by quartus-18.1...
 libssl.so.6()(64bit) is needed by quartus-18.1.0.625...
 libudev.so.0()(64bit) is needed by quartus-18.1.0.625...
 libzmq.so.3()(64bit) is needed by quartus-18.1.0.625...
 usb-blaster-udev is needed by quartus-18.1.0.625-4.fc28...
# yum install quartus-18.1.0.625-4.fc28.x86_64.rpm
Dependencies resolved.
=============================================================
Package             Arch   Version           Repository
=============================================================
Installing:
quartus             x86_64 18.1.0.625-4.fc28 @commandline
Installing dependencies:
libpng12            x86_64 2:1.2.49-2.el6    tuxad-quartus-64
libudev0            x86_64 147-2.73.el6.2.1  tuxad-quartus-64
ncurses-compat-libs i686   6.1-5.20180224... updates
ncurses-compat-libs x86_64 6.1-5.20180224... updates
openssl0            x86_64 0.9.8e-40.el6.1.2 tuxad-quartus-64
tcsh                x86_64 6.20.00-9.fc28    fedora
usb-blaster-udev    noarch 1.0-1             tuxad-quartus-64
zeromq3             x86_64 3.2.5-2.el6       tuxad-quartus-64

Transaction Summary
=============================================================
Install  9 Packages

Total size: 3.8 G
Total download size: 4.5 M
Installed size: 11 G
Is this ok [y/N]:

Activate the Quartus repo by installing its RPM package:


rpm -i http://ngtx.de/tuxad-quartus.rpm


Posted by Frank W. Bergmann | Permanent link | File under: rpm, repository, redhat, fedora

2019-02-25 00:10:32

Power Measuring Kingston A400 240 GB

The power consumption of the A400 240 GB is comparable to the A400 120 GB. On read access it has a low consumption but on write access it has medium power consumption.

  • Idle 0.3 W
  • Read 0.52 W
  • Write 0.92 - 1.56 W, avg. 1.08 W

Measuring environment is explained in power measuring ADATA SU800.

x-y diagram of measurements

Other measurements:


Posted by Frank W. Bergmann | Permanent link | File under: ssd, power_measuring