Code Monkey home page Code Monkey logo

ftcommunity-txt's Introduction

Community edition of the standard firmware for the FT-TXT.

Quick start

Please use the installation guide or the Deutsche Kurzanleitung (installation guide in german) for a quick start. More infos can be found on the web site

What is this and why would I want this?

The Fischertechnik TXT controller is a Linux driven computerized brick for the Fischertechnik construction toy.

TXT

The Fischertechnik TXT comes pre-installed with a Linux based firmware. This firmware is slightly outdated (the base system consist of parts which are all at least two years old) and doesn't make full use of the hardware capabilities of the TXT.

The community firmware aims to change this. It replaces the entire system with much newer components including an updated Linux kernel and updates for all system components. Furthermore it provides a fresh user interface and focusses on connectivity in general. It can connect to your home WiFi, to other Fischertechnik Components, to custom made controllers like ftDuino, to foreign parts like e.g. Lego WeDo bricks, and much more.

The community firmware doesn't replace the built-in original firmware. Instead it is installed on a regular micro-SD card and provides a means to leave the original untouched which being used. Simply pull out the SD card containing the community firmware to bring your TXT back into factory state.

(German) Forum

Most discussions around the community firmware take place in the FTCommunity forum. This is a german forum but english contributions are welcome.

Installation and Usage

See the getting started guide for instructions on how to install and use the community firmware.

Build the firmware from source

In the toplevel directory, type

make

This will build the entire root file system and the kernel and place the resulting files in the buildroot/output/images directory.

After the build has finished, copy the files buildroot/output/images/uImage, buildroot/output/images/am335x-kno_txt.dtb and buildroot/output/images/rootfs.img to an empty, FAT32 formatted SD card.

Switch back to original firmware

Shut down the TXT and remove the SD card with the ftcommunity firmware. On the next start, the TXT will boot the original Fischertechnik firmware.

ftcommunity-txt's People

Contributors

aduskett avatar aldot avatar arnout avatar baruchsiach avatar bkuhls avatar culssw avatar erikbandersen avatar fabio-porcedda avatar fabioestevam avatar ffontaine avatar fperrad avatar gustavoz avatar harbaum avatar jacmet avatar joerg-krause avatar lucaceresoli avatar maximeh avatar patrickdepinguin avatar pauliuszaleckas avatar pseiderer avatar rkunze avatar romainnaour avatar ski7777 avatar spdawson avatar tpetazzoni avatar tsed avatar vapier avatar wbx-github avatar yann-morin-1998 avatar yegorich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ftcommunity-txt's Issues

Video device is not working properly

The camera is working well under Ubuntu an a PC with opencv and pyqt.

On the TXT the same program results in the first few lines of the image repeating over and over again:

camera

This happens with opencv2 and opencv3. The repeating lines differ if the image changes. So these lines are not from the same image. It seems like the frame data is updated while the frame is being read.

Sound Issue

When trying to play Sounds via ftrobopy, this is only possible, if the ft-GUI open. If ft-GUI is closed, maybe the first sound will be played and then you can listen to the silence.

Raphael

Issues with Text-mode apps

As ski7777 pointed out in the forum, text-mode apps cannot be terminated via home-button - one has to touch the X in the corner to close the app. Pressing the blue-lit home button has no effect on the running text-mode app.

Also, a running text-mode app is not shown in the WebIF as running and cannot be terminated via the web-IF

If another app is launched via the WebIF, while the text-mode app is running, the text-mode app shows up again after the other app is terminated via WebIF.

Sound support in direct mode is unstable

The sound support introduced with the direct mode is unstable. After playing a few random sounds for about half a minute no audio is generated anymore. The txtsndcat based programs then alyo don't work. But starting the original gui via launcher restores audio functionality.

Change documentation to reflect the changes for v0.9.3

Version 0.9.3 will have a number of changes from version 0.9.2:

  • A new version of ftrobopy that can access the TXT I/O pins without the using the Fischertechnik GUI from original firmware
  • Changed look and feel of the launcher
  • Changes in some system apps (e.g. WiFi)
  • ...

The documentation (especially the wiki) needs to be updated to reflect these changes.

Affected pages (check mark means "updated for 0.9.3"):

Note: Documentation/Wiki changes should ideally be made all together and at the same time as the release of v0.9.3 itself in order to not confuse our users. Question: How to best organize this?

After upgrading the stock firmware the ft-GUI crashes by starting a SD-Card program

Most is said in the title.
After upgrading the stock firmware to an beta version, I tried to run the ft-GUI in the Community firmware. Mainly it works fine, but after starting a program, which was stored on the SD-Card and which was compiled for RoBoPro 4.2.3, the ft-GUI crashed an started again. After re downloading (and compiling) the program to the TXT the Program works fine. The update script for the stock firmware deletes all downloaded program on the TXT´s Flash.
We need to check, whether the RoBoPro version changed and delete all Programs on the SD-Card.

Raphael

Built error

Due to some built issues a new set-up have been used:

  • Oracle VM VirtualBox
  • Ubuntu-16.04 LTS.
    Unfortunately following error appears during built:
    Download error on https://pypi.python.org/simple/vcversioner/: unknown url type: https -- Some packages may not be found! Couldn't find index page for 'vcversioner' (maybe misspelled?) Download error on https://pypi.python.org/simple/: unknown url type: https -- Some packages may not be found! No local packages or download links found for vcversioner Traceback (most recent call last): File "setup.py", line 44, in <module> vcversioner={"version_module_paths" : ["jsonschema/_version.py"]}, File "/home/christian/ftcommunity-TXT/output/host/usr/lib/python3.5/distutils/core.py", line 108, in setup _setup_distribution = dist = klass(attrs) File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 268, in __init__ File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 313, in fetch_build_eggs File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 846, in resolve File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 1091, in best_match File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 1103, in obtain File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 380, in fetch_build_egg File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 633, in easy_install distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('vcversioner')
    A manual installation with following commands did not solve the problem:
    sudo apt-get update
    sudo apt-get install python-vcversioner
    Any idea?

Store has trouble with "large" apps

When installing the MP3-Player app, the waiting indicator gets slower and slower until it eventually stops moving at all, giving the impression that the system hangs. However, this is in fact not the case: Just waiting finishes the installation of the MP3-Player and returns to the app list of the store as expected.

Pushing the main TXT-button while the waiting indicator "hangs" terminates the store - but leaves the waiting indicator on the screen...

Fiddling around I even managed to corrupt the list of installed apps somehow (none of the previously installed apps showed up any more and any action in the store gave me a "could not delete app" or "could not create directory" error (to fix it, I deleted the whole app-directory from the SD-card.

I'm using the advanced setup of the SD-card and the 0.9.2-1-g8361410 firmware I built from scratch today.

State clearer what USB "Host Port" means

Just noticed that in the Colorange/Camera/ZBar/WeDo apps, the error message about the missing USB-Device asks the user to attach a camera to the "host port".
While this is obviously clear for techies (and for most parts by the shape of the connector) I'd still suggest adding (or even replacing "host port" wiith) "USB1" - as the TXT is clearly labelled, we may as well make use of it.

Convert system apps to "launcher-plugin"-apps for faster startup

The new folder based launcher introduced in 6c4daa7 allows running specially prepared apps in the same python process as the launcher itself, which cuts down the launch time for these apps from approximately five seconds to less than one second - although at the risk that a defective app can kill or block the launcher.

Because system apps are usually not too complicated, pretty well tested, and can benefit vastly from the enhanced startup times, convert all system apps to this new "launcher-plugin" style.

Playing sounds is really complicate

When I will play sound at the moment I have to use the txtsemdcat and mpg123. I have seen that alsa is installed on the TXT but no output device is configured. Could we add the internal speaker to alsa?

Raphael

RoboPro <-> LCD

Text or control elements from RoboPro not visible on TXT LCD.

Reboot doesn´t work

If I reboot with sudo reboot the TXT doesn´t reboot. I stocks somewhere in u-boot:

Stopping DHCP server: OK
Stopping sshd: OK
Stopping lighttpd: OK
Stopping ntpd: OK
Stopping network: ifdown: interface eth0 not configured
FAIL
Stopping system message bus: done
Saving random seed... done.
Stopping thd: OK
Stopping logging: OK
umount: /dev/mmcblk0p1 busy - remounted read-only
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system reboot
[ 4167.119566] reboot: Restarting system

U-Boot SPL 2013.10 (Jul 04 2015 - 08:30:17)
>>> I2C0 On
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
>>> setup_dplls vor do_setup_dpll
>>> setup_dplls nach do_setup_dpll
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
>>> Setting MUX Start
>>> Setting MUX End
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.

For the new update App, a reboot feature would be perfect. I think we need to reset the CPU by itself. Maybe we need to add something in the dts.

Raphael

Read basic config from config-file on FAT-Partition

Make basic features configurable via config-file placed on FAT partition so the config can easily be edited and saved to survive firmware updates.

I'd particularly like to use this to set up WiFi so I can enter the WPA/WEP-Key on the desktop computer.

Add status icons (at least for network)

It's rather onerous to always check with the NetInfo-App whether errors occuring are due to a missing network connection.

Suggested solution would be to also give the launcher a sandwich menu so the right part of the header could be used for status icons.
In the meantime the NetInfo app could be changed to display wlan0-info when launched (instead of the rather irrelevant Io-device) so at least the info on a potentially broken wlan0-configuration is visible immediately.

root priveliges for apps

The update script was finished a few weeks ago by me, but it only worked by using a shell with root. But currently the users have to put the SD-Card in the compute or use the root-access to update the operating system. I don´t think that this is the best solution, we have to search another Solution. In my opinion we should run the Launcher with root rights. Normal apps will be started with "ftc"-rights and apps with root: True in the manifest will only be started after the user have acknowledged, that the TXT could be destroyed.
What do you think?

Raphael

Issues with Simple Layout SD-Card

Re: readme.md: The name of the image-file should be output/images/rootfs.img (not: .image as it says in the text)
I'd also suggest to add a note that the first startup with the "Simple Layout" might take quite some time - at least for me it did. Subsequent startups felt a lot faster.

Re: Use: After startup the launcher hangs. I get to see the full launcher with all icons as I'm used to, but it doesn't react to any touches on the display.
The Web-Interface is however available, as is the SSH-Login. On the Web-IF it says "Launcher not responding".

When I install the firmware from the same build-process in the classic setup on my partitioned SD, everything works fine.

Cant add new wiki Page

I woluld like to add a wiki page about the Vm (currently making) (Upload will take long). But i cant add a page.

NetInfo-App doesn't show current network status

NetInfo-App doesn't show current network status. Even if the connection is broken, the wlan0 entry still shows the last valid IP-Information but gives no indication that the link is no longer active.

The same is true btw for usb0 - it still shows an IP although it didn't have a USB link for several reboots in my case.

Can't uninstall "Hello"-app via app-store

Strange issue: Once the Hello-App is installed, I cannot uninstall it any more via the app store because tapping on the "Hello" line doesn't open the details-page of the app with the uninstall link.

I tried moving the list up and down to make sure it's no issue with the touchscreen. It is not - the problem persists no matter where I have to tap. And property pages of other apps can be opened no matter where.

Closing and reopening the app-store didn't help either; deleting the Hello-App was possible with the webIF.

When the app was deleted, I could open the properties-page in the app store again and install it - thereby reproducing the effects described above - uninstall only possible via webIF

SSH Login via W-LAN not possible

I´ve tried to login via SSH witch crdicals ftc, ftc but

20:57:11.950 Attempting password authentication.
20:57:11.963 Authentication failed. Remaining authentication methods: 'publickey,password,keyboard-interactive'.

it say that password is wrong.

Add "System Update" app and launcher status bar plugin

With the new SD card file system layout introduced in 79e363f and the system update script from 8c1f14f, we have the necessary functionality for "Over-the-Air" automatic system updates for the community firmware — we just need a launcher status bar plugin that periodically checks if a new version is available, and a GUI app that displays update metadata (version number etc.) and provides an "Install Update" button.

TxtControlMain crashes when running RoboPro files from file system

When a previously downloaded RoboPro file is loaded and run in the TxtControlMain GUI, TxtControlMain crashes with a SIGILL (attempt to execute an illegal or privileged instruction).

The same RoboPro file runs fine when run in RoboPro online mode or downloaded and directly exceuted from RoboPro.

libfakeroot.so not found

fakeroot: preload library `libfakeroot.so' not found, aborting.
fs/tar/tar.mk:13: recipe for target '/ftcommunity-TXT/output/images/rootfs.tar' failed

I tried to build yor update but make gives me the following error. I didnt change anything on the VM.

Raphael

RTC Wake Alarm is not usable from out of an app

Currently /sys/class/rtc/rtc1/wakealarm is not writable for the ftc user.
For some applications it would be great to wake up the TXT periodically. I think we have two ways:

  • Everybody can set his wakealrm and destroys the wakewalrm of another person. With this we doesn´t know which app to start after boot
  • We have a app autostart handler, on which apps can register and unregister autostarts. If system is running it will start the apps the normal way. If it recognises that the TXT was bootet by RTC it will run all missed autostarts. But what to do if another (maybe autostarted) app is running? Maybe we could send also arguments via launches launch command, so the app could recognise, that it was autostarted.

Raphael

Launcher: Reorganize app categories

@harbaum suggested in a comment to PR#58 to change the app categories for the launcher to:

  • system (also used for the settings)
  • models (for everything controlling models)
  • tools (for things like clocks, calculators, ...)
  • test (For demo and test stuff)

This issue is intended to discuss and hash out these changes.

Thermo-App shows red line below bubble

If no sensor is attached, the app extends the red line below the "bubble" - see attached image. (Thanks for the screen-shot tool!)

screenshot

Maybe a "no compatible sensor found" message could be displayed if the readings are way out of any plausible range.

I18n

I have started to do some i18n work.

This is based upon usual LANG/LANGUAGE/LC_XXX environment variables. The settings are stored in /etc/locale. I also added an app to change this setting. Currently that app only supports four languages (english, german, dutch and french). Further languages can easily be added. The language app itself is the only one that's fully translated into all four languages. Language changes have immediate effect and are also reported to the launcher. The i18n mechanisms supported by Qt are not limited and would also cope with asian languages etc. Thus adding support for a new language only required minor changes to the language app itself.

The launcher reloads its language settings whenever requested to do a "rescan". Thus the language app alse requests a rescan if the language was changed.

All other apps don't use any special mechanisms. Since only one app can run at a time and since the language is changed using an app the language cannot change while a different app than the language app runs. Therefore switching language still feels "immediate" to the user.

This issue is meant to be used to discuss the pro and cons of the current approach and to improve it.

Which languages do we want to support by default? Any good suggestions for the i18n of the web interface?

App store appearance

The description of the apps also displays a horizontal scrollbar (presumably because the non-wrappable mail-adress is too long). I'd suggest reducing the font size a little and forcing text-wrap for words longer than a line.

Also, I find it uncommon that the install/uninstall menu appears over the sandwich menu (i.e. under the finger) - from Android UI rules (and also the TXT category dropdown) I'm used to the menu appearing below the finger and below the sandwich menu button.

Edit: The fontsize used in the gallery-app for the Text-Widged seems to be just fine for discriptive texts. For the list of Apps the chosen (bigger) font size seems just perfect. /Edit.

Manifest parsing for apps breaks if the manifest contains umlauts

Commit 2a1713e introduced UTF-8 umlauts ("Ü", to be specific) in the manifest of the "about" app. This causes mainfest.read() in launcher.py to fail with

Traceback (most recent call last):
  File "/opt/ftc/launcher.py", line 968, in <module>
    FtcGuiApplication(sys.argv)
  File "/opt/ftc/launcher.py", line 705, in __init__
    self.addWidgets()
  File "/opt/ftc/launcher.py", line 950, in addWidgets
    self.apps = self.scan_app_dirs()
  File "/opt/ftc/launcher.py", line 891, in scan_app_dirs
    manifest.read(manifestfile)
  File "/usr/lib/python3.5/configparser.py", line 696, in read
  File "/usr/lib/python3.5/configparser.py", line 1012, in _read
  File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 283: ordinal not in range(128)

(after deleting the try...except around file loading in launcher.py)

Make system more end-user-friendly

Right now all apps are equally accessible / deletable by the user ftc.

I would suggest the following:

  • introducing an additional "end user" account (eg. ftc-user) which after logon via sFTP/SSH only "sees" the (user)apps directory (seebelow)
  • storing apps in two separate locations: (1) for system apps (currently WiFi, NetInfo, FT-GUI, About) which are invisible to and undeletable by ftc-user and (2) for the app samples and apps generated by the end user.
    Then a "cleanup" of the app directory doesn't remove basic functionality.

The idea is to allow beginners to gain experience slowly and not to confuse them with a full view of the linux fs, while still allowing the pros full access.

Sub-windows & behaviour of home-button (particularly: "About"-App)

When the Version/Licenses sub-window is opened in the "About"-app, it shows an X in the top right corner. Tapping on the X only closes the sub-window and returns to the "About"-app.
Pressing the "Home"-Button in the same situation shows the launcher.

Is this intended?

I'm uncertain myself right now - it irritated me because I expected the "home"-button to be a "tap-the-x"-replacement. On the other hand I think it's a good idea from a usability perspective to have the button always take one back to a known starting point - the Launcher.

"Missing" corners on Startup / Shutdown screen

When booting up, the start screen shows a small black box in the top left corner. No big deal, but it hurts my eye ;)

When shutting down via long button press while the FT-GUI is running, the Shutdown-Screen leaves a bigger black field in the top right corner - showing the time the FT-GUI displays in this corner. Also no big deal but ... ;)

USB keyboard doesn't work if GUI is run under FTC user

The USB keyboard works fine if the launcher and subsequent apps are run with root permissions. When being run under permissions of the ftc user only some keys do anything at all and even those generate wrong key events. This can best be seen in the "TXT" tab of the gallery app.

About/License wont close on pushbutton press

When I open the About App and klick on License the License Info opens but when I click the button it wont close. But when I have pressed the button and then I press the X in the right upper corner I am Directly on Desktop.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.