├── .gitignore ├── .gitmodules ├── Config.in ├── LICENSE ├── Makefile ├── README.md ├── board └── fischertechnik │ └── TXT │ ├── busybox_defconfig │ ├── device_table_initramfs.txt │ ├── device_table_rootfs.txt │ ├── device_tree.dts │ ├── ftc-logo.xcf │ ├── initramfs │ ├── ftc-firstboot-failed.png │ ├── ftc-firstboot.png │ ├── init │ └── repartition-sd-card │ ├── linux_defconfig │ ├── patches │ └── linux │ │ ├── 001-add-fb_ili9341_txt-support.patch │ │ ├── 700-lcd-white.patch │ │ └── fix-build-error-under-gcc6.patch │ ├── post-build.sh │ ├── rootfs │ ├── etc │ │ ├── X11 │ │ │ ├── xinit │ │ │ │ └── xinitrc │ │ │ ├── xorg.conf │ │ │ ├── xorg.conf.ccw │ │ │ ├── xorg.conf.cw │ │ │ ├── xorg.conf.ud │ │ │ └── xorg.conf.up │ │ ├── bluetooth │ │ │ └── main.conf │ │ ├── default │ │ │ ├── launcher │ │ │ └── x11vnc │ │ ├── dhcp │ │ │ └── dhcpd.conf │ │ ├── fstab │ │ ├── ftc-logo.png │ │ ├── ftc-shutdown.png │ │ ├── fw-ver.txt │ │ ├── init.d │ │ │ ├── S01hwclock │ │ │ ├── S02fixes │ │ │ ├── S10triggerhappy │ │ │ ├── S40bluetooth │ │ │ ├── S80touchscreen-calibration │ │ │ ├── S90launcher │ │ │ ├── S91rompermissions │ │ │ ├── rcK │ │ │ └── rcS │ │ ├── inittab │ │ ├── lighttpd │ │ │ ├── conf.d │ │ │ │ ├── cgi.conf │ │ │ │ └── expire.conf │ │ │ ├── lighttpd.conf │ │ │ └── modules.conf │ │ ├── locale │ │ ├── netreq_permissions │ │ ├── network │ │ │ ├── interfaces │ │ │ └── wpa.wlan0.conf │ │ ├── pam.d │ │ │ ├── login │ │ │ ├── sshd │ │ │ └── sudo │ │ ├── pointercal │ │ ├── profile.d │ │ │ └── ftc.sh │ │ ├── ssh │ │ │ └── sshd_config │ │ ├── sudoers │ │ ├── sudoers.d │ │ │ ├── bluetooth │ │ │ ├── ft-gui │ │ │ ├── network │ │ │ ├── shutdown │ │ │ ├── system-update │ │ │ ├── touchscreen-calibration │ │ │ └── wifi │ │ ├── triggerhappy │ │ │ └── triggers.d │ │ │ │ └── poweroff.conf │ │ ├── udev │ │ │ └── rules.d │ │ │ │ ├── 40-fischertechnik_interfaces.rules │ │ │ │ ├── 40-lego_interfaces.rules │ │ │ │ ├── 60-i2c-tools.rules │ │ │ │ ├── 99-USBasp.rules │ │ │ │ ├── 99-ftduino.rules │ │ │ │ └── 99-permissions.rules │ │ ├── usbmount │ │ │ └── usbmount.conf │ │ └── wpa_supplicant.conf │ ├── opt │ │ ├── fischertechnik │ │ │ ├── run-txtcontrol │ │ │ └── start-txtcontrol │ │ └── ftc │ │ │ ├── TouchAuxiliary.py │ │ │ ├── TouchStyle.py │ │ │ ├── TxtStyle.py │ │ │ ├── apps │ │ │ ├── system │ │ │ │ ├── about │ │ │ │ │ ├── about.py │ │ │ │ │ ├── about_de.qm │ │ │ │ │ ├── about_de.ts │ │ │ │ │ ├── gpl.txt │ │ │ │ │ ├── gpl_de.txt │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ ├── index.html │ │ │ │ │ ├── lgpl.txt │ │ │ │ │ ├── lgpl_de.txt │ │ │ │ │ ├── manifest │ │ │ │ │ ├── mit.txt │ │ │ │ │ └── mit_de.txt │ │ │ │ ├── bluetooth │ │ │ │ │ ├── bluetooth.py │ │ │ │ │ ├── bluetooth_de.qm │ │ │ │ │ ├── bluetooth_de.ts │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ └── manifest │ │ │ │ ├── display │ │ │ │ │ ├── display.py │ │ │ │ │ ├── display_de.qm │ │ │ │ │ ├── display_de.ts │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ └── manifest │ │ │ │ ├── ftgui │ │ │ │ │ ├── ftgui.py │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ └── manifest │ │ │ │ ├── language │ │ │ │ │ ├── dutch.png │ │ │ │ │ ├── dutch.svg │ │ │ │ │ ├── english.png │ │ │ │ │ ├── english.svg │ │ │ │ │ ├── french.png │ │ │ │ │ ├── french.svg │ │ │ │ │ ├── german.png │ │ │ │ │ ├── german.svg │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ ├── language.py │ │ │ │ │ ├── language_de.qm │ │ │ │ │ ├── language_de.ts │ │ │ │ │ ├── language_fr.qm │ │ │ │ │ ├── language_fr.ts │ │ │ │ │ ├── language_nl.qm │ │ │ │ │ ├── language_nl.ts │ │ │ │ │ └── manifest │ │ │ │ ├── network │ │ │ │ │ ├── allow.png │ │ │ │ │ ├── deny.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ ├── manifest │ │ │ │ │ ├── network.py │ │ │ │ │ ├── network_de.qm │ │ │ │ │ └── network_de.ts │ │ │ │ ├── store │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ ├── installed.png │ │ │ │ │ ├── installed.svg │ │ │ │ │ ├── manifest │ │ │ │ │ ├── not_installed.png │ │ │ │ │ ├── not_installed.svg │ │ │ │ │ ├── store.py │ │ │ │ │ ├── store_de.qm │ │ │ │ │ ├── store_de.ts │ │ │ │ │ ├── update_available.png │ │ │ │ │ └── update_available.svg │ │ │ │ └── wlan │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon.svg │ │ │ │ │ ├── manifest │ │ │ │ │ ├── wlan.py │ │ │ │ │ ├── wlan_de.qm │ │ │ │ │ └── wlan_de.ts │ │ │ └── user │ │ │ ├── ftduino_direct.py │ │ │ ├── launcher.py │ │ │ ├── launcher_de.qm │ │ │ ├── launcher_de.ts │ │ │ ├── logger.py │ │ │ ├── media │ │ │ ├── cfw_logo.svg │ │ │ ├── cfw_logo_1024.png │ │ │ ├── cfw_logo_512.png │ │ │ ├── icon_app.png │ │ │ ├── icon_app.svg │ │ │ ├── icon_cfw.png │ │ │ ├── icon_cfw.svg │ │ │ ├── icon_folder.png │ │ │ ├── icon_folder.svg │ │ │ ├── icon_folder_up.png │ │ │ ├── icon_folder_up.svg │ │ │ ├── icon_move_into_folder.png │ │ │ ├── icon_move_into_folder.svg │ │ │ ├── icon_move_into_new_folder.png │ │ │ ├── icon_move_into_new_folder.svg │ │ │ ├── icon_remove_from_folder.png │ │ │ ├── icon_remove_from_folder.svg │ │ │ ├── icon_remove_from_folder_and_delete_folder.png │ │ │ └── icon_remove_from_folder_and_delete_folder.svg │ │ │ ├── plugins │ │ │ ├── bluetooth.py │ │ │ ├── bluetooth_de.qm │ │ │ ├── bluetooth_de.ts │ │ │ ├── eth.py │ │ │ ├── eth_de.qm │ │ │ ├── eth_de.ts │ │ │ ├── kbd.py │ │ │ ├── kbd_de.qm │ │ │ ├── kbd_de.ts │ │ │ ├── rtc.py │ │ │ ├── rtc_de.qm │ │ │ ├── rtc_de.ts │ │ │ ├── wlan.py │ │ │ ├── wlan_de.qm │ │ │ └── wlan_de.ts │ │ │ ├── themes │ │ │ └── default │ │ │ │ ├── cancelicon.png │ │ │ │ ├── cancelicon.svg │ │ │ │ ├── checkbox_checked.png │ │ │ │ ├── checkbox_checked.svg │ │ │ │ ├── checkbox_unchecked.png │ │ │ │ ├── checkbox_unchecked.svg │ │ │ │ ├── checkicon.png │ │ │ │ ├── checkicon.svg │ │ │ │ ├── closeicon.png │ │ │ │ ├── closeicon.svg │ │ │ │ ├── confirmicon.png │ │ │ │ ├── confirmicon.svg │ │ │ │ ├── downicon.png │ │ │ │ ├── keyboard_return.png │ │ │ │ ├── keyboard_return.svg │ │ │ │ ├── menuicon.png │ │ │ │ ├── menuicon.svg │ │ │ │ ├── osk_caps.png │ │ │ │ ├── osk_caps.svg │ │ │ │ ├── osk_erase.png │ │ │ │ ├── osk_erase.svg │ │ │ │ ├── scrollarrow_left.png │ │ │ │ ├── scrollarrow_left.svg │ │ │ │ ├── scrollarrow_right.png │ │ │ │ ├── scrollarrow_right.svg │ │ │ │ ├── scrollbar_handle.png │ │ │ │ ├── scrollbar_handle.svg │ │ │ │ ├── spinbox_down.png │ │ │ │ ├── spinbox_down.svg │ │ │ │ ├── spinbox_down_disabled.png │ │ │ │ ├── spinbox_down_disabled.svg │ │ │ │ ├── spinbox_up.png │ │ │ │ ├── spinbox_up.svg │ │ │ │ ├── spinbox_up_disabled.png │ │ │ │ ├── spinbox_up_disabled.svg │ │ │ │ └── style.qss │ │ │ └── touch_keyboard.py │ ├── usr │ │ ├── bin │ │ │ ├── get_size_json.py │ │ │ └── launcher-msg │ │ ├── lib │ │ │ └── firmware │ │ │ │ └── ti-connectivity │ │ │ │ └── wl18xx-conf.bin │ │ └── sbin │ │ │ ├── calibrate-touchscreen │ │ │ ├── halt │ │ │ ├── pam_null_passwd │ │ │ ├── pam_touchscreen │ │ │ ├── poweroff │ │ │ ├── reboot │ │ │ └── system-update │ └── var │ │ └── www │ │ ├── appinfo.py │ │ ├── applist.py │ │ ├── applog.html │ │ ├── applog.py │ │ ├── apps │ │ ├── brick.gif │ │ ├── default_screenshot.png │ │ ├── delete.py │ │ ├── icon.png │ │ ├── index.py │ │ ├── launch.py │ │ ├── screenshot.html │ │ ├── screenshot.png │ │ ├── screenshot.py │ │ ├── stop.py │ │ ├── txt.css │ │ └── upload.py │ └── user.tab ├── configs ├── fischertechnik_TXT_initramfs_defconfig └── fischertechnik_TXT_rootfs_defconfig ├── docs ├── .gitignore ├── 404.html ├── _config.yml ├── _data │ └── label.yaml ├── _includes │ ├── de.svg │ ├── en.svg │ ├── examples │ │ └── python │ │ │ ├── tutorial-1 │ │ │ ├── .directory │ │ │ ├── icon.png │ │ │ ├── manifest │ │ │ ├── test.py │ │ │ └── test.zip │ │ │ ├── tutorial-3 │ │ │ ├── app_tutorial3_1.py │ │ │ ├── app_tutorial3_2.py │ │ │ ├── app_tutorial3_3.py │ │ │ ├── app_tutorial3_4.py │ │ │ └── app_tutorial3_5.py │ │ │ └── tutorial-simple │ │ │ └── hello.png │ └── navigation.html ├── _layouts │ ├── compress.html │ ├── default.html │ └── postprocess-kramdown.html ├── _sass │ ├── fork-me-on-github.scss │ ├── markdown.scss │ └── syntax-highlighting-github.scss ├── apple-touch-icon.png ├── css │ └── screen.scss ├── de │ ├── advanced │ │ ├── building │ │ │ ├── building.md │ │ │ ├── index.md │ │ │ ├── preparing.md │ │ │ ├── prerequisites.md │ │ │ └── updating.md │ │ ├── index.md │ │ ├── password-policy.md │ │ └── serial-console.md │ ├── getting-started │ │ ├── apps.md │ │ ├── index.md │ │ ├── installation.md │ │ └── usage.md │ ├── index.md │ └── programming │ │ ├── brickly │ │ ├── index.md │ │ ├── python │ │ ├── examples │ │ ├── index.md │ │ ├── tutorial-1.md │ │ ├── tutorial-2.md │ │ ├── tutorial-3.md │ │ └── tutorial-simple.md │ │ ├── robopro.md │ │ └── startide.md ├── en │ ├── advanced │ │ ├── building │ │ │ ├── building.md │ │ │ ├── index.md │ │ │ ├── preparing.md │ │ │ ├── prerequisites.md │ │ │ └── updating.md │ │ ├── index.md │ │ ├── password-policy.md │ │ └── serial-console.md │ ├── getting-started │ │ ├── apps.md │ │ ├── index.md │ │ ├── installation.md │ │ └── usage.md │ ├── index.md │ └── programming │ │ ├── index.md │ │ ├── python │ │ ├── examples │ │ ├── icon.png │ │ ├── index.md │ │ ├── tut1_img1.jpg │ │ ├── tut1_img10.png │ │ ├── tut1_img2.jpg │ │ ├── tut1_img3.jpg │ │ ├── tut1_img4.jpg │ │ ├── tut1_img5.jpg │ │ ├── tut1_img6.jpg │ │ ├── tut1_img6.png │ │ ├── tut1_img7.png │ │ ├── tut1_img8.png │ │ ├── tut1_img9.png │ │ ├── tut2_img1.png │ │ ├── tut2_img1b.png │ │ ├── tut2_img2.png │ │ ├── tut2_img3.png │ │ ├── tut3_img1.png │ │ ├── tutorial-1.md │ │ ├── tutorial-2.md │ │ ├── tutorial-3.md │ │ └── tutorial-4.md │ │ ├── robopro.md │ │ └── startide.md ├── favicon.ico ├── ieconfig.xml ├── index.html ├── media │ ├── about-with-menu.png │ ├── about.png │ ├── booting-CFW.png │ ├── examples │ ├── launcher-with-info-menu.png │ ├── logo.png │ ├── store.png │ ├── touchscreencalibration.png │ └── txt_cw.jpg ├── msapplication │ ├── largetile.png │ ├── mediumtile.png │ ├── smalltile.png │ └── widetile.png ├── preview.jpg ├── pwa │ ├── logo.png │ ├── manifest_de.json │ ├── manifest_en.json │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ └── splashscreens │ │ ├── ipad_splash.png │ │ ├── ipadpro1_splash.png │ │ ├── ipadpro2_splash.png │ │ ├── ipadpro3_splash.png │ │ ├── iphone5_splash.png │ │ ├── iphone6_splash.png │ │ ├── iphoneplus_splash.png │ │ ├── iphonex_splash.png │ │ ├── iphonexr_splash.png │ │ └── iphonexsmax_splash.png ├── robots.txt ├── sitemap.xml └── sw.js ├── external.desc ├── external.mk ├── install_ssh.sh ├── package ├── ft_bt_remote_server │ ├── 0001-Add-sudoers.d-file.patch │ ├── Config.in │ └── ft_bt_remote_server.mk ├── libroboint │ ├── Config.in │ └── libroboint.mk ├── python-ftrobopy │ ├── Config.in │ └── python-ftrobopy.mk ├── python-fttxpy │ ├── Config.in │ └── python-fttxpy.mk ├── python-libroboint │ ├── Config.in │ └── python-libroboint.mk ├── python-lidar │ ├── Config.in │ ├── python-lidar.hash │ └── python-lidar.mk ├── python-lumacore │ ├── Config.in │ ├── python-lumacore.hash │ └── python-lumacore.mk ├── python-lumaled_matrix │ ├── Config.in │ ├── python-lumaled_matrix.hash │ └── python-lumaled_matrix.mk ├── python-lumaoled │ ├── Config.in │ ├── python-lumaoled.hash │ └── python-lumaoled.mk ├── python-pandas │ ├── Config.in │ ├── python-pandas.hash │ └── python-pandas.mk ├── python-robolt │ ├── Config.in │ └── python-robolt.mk ├── python-semantic-version1 │ ├── Config.in │ ├── python-semantik-versions.hash │ └── python-semantik-versions.mk ├── python-sip-qt5 │ ├── Config.in │ └── python-sip-qt5.mk ├── python-smbus2 │ ├── Config.in │ ├── python-smbus2.hash │ └── python-smbus2.mk └── python-zbarlight │ ├── Config.in │ └── python-zbarlight.mk ├── patches ├── psplash │ └── 0001-ft-splash.patch └── x11vnc │ └── 0003-Fix-multi-definition.patch └── update_translation.sh /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .jekyll* 3 | __pycache__/ 4 | /output 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/_brickly"] 2 | path = docs/_brickly 3 | url = https://github.com/EstherMi/ft-brickly-userguide.git 4 | [submodule "buildroot"] 5 | path = buildroot 6 | url = https://github.com/buildroot/buildroot.git 7 | -------------------------------------------------------------------------------- /Config.in: -------------------------------------------------------------------------------- 1 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/ft_bt_remote_server/Config.in" 2 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/libroboint/Config.in" 3 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-ftrobopy/Config.in" 4 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-fttxpy/Config.in" 5 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-libroboint/Config.in" 6 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-lidar/Config.in" 7 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-lumacore/Config.in" 8 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-lumaled_matrix/Config.in" 9 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-lumaoled/Config.in" 10 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-pandas/Config.in" 11 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-robolt/Config.in" 12 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-semantic-version1/Config.in" 13 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-smbus2/Config.in" 14 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-zbarlight/Config.in" 15 | source "$BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/package/python-sip-qt5/Config.in" 16 | 17 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) 2 | OUTPUT_DIR := $(ROOT_DIR)/output 3 | BUILD_DIR := $(OUTPUT_DIR)/build 4 | IMAGE_DIR := $(OUTPUT_DIR)/images 5 | INITRAMFS_DIR := $(OUTPUT_DIR)/initramfs 6 | BR_INIT_ENV := BR2_EXTERNAL=$(ROOT_DIR) 7 | 8 | .PHONY: all 9 | all: rootfs 10 | 11 | .PHONY: clean 12 | clean: 13 | rm -rf $(BUILD_DIR) 14 | 15 | .PHONY: cleanall 16 | cleanall: 17 | rm -rf $(OUTPUT_DIR) 18 | 19 | .PHONY: config 20 | config: $(BUILD_DIR)/rootfs/.config $(BUILD_DIR)/initramfs/.config 21 | 22 | .PHONY: source 23 | source: rootfs-source initramfs-source 24 | 25 | .PHONY: rootfs-source 26 | rootfs-source: $(BUILD_DIR)/rootfs/.config 27 | $(MAKE) -C $(BUILD_DIR)/rootfs source 28 | 29 | .PHONY: initramfs-source 30 | initramfs-source: $(BUILD_DIR)/initramfs/.config 31 | $(MAKE) -C $(BUILD_DIR)/initramfs source 32 | 33 | $(BUILD_DIR)/rootfs/.config: $(ROOT_DIR)/buildroot/Makefile configs/fischertechnik_TXT_rootfs_defconfig 34 | mkdir -p $(BUILD_DIR)/rootfs 35 | $(BR_INIT_ENV) $(MAKE) O=$(BUILD_DIR)/rootfs -C $(ROOT_DIR)/buildroot fischertechnik_TXT_rootfs_defconfig 36 | 37 | $(BUILD_DIR)/initramfs/.config: $(ROOT_DIR)/buildroot/Makefile configs/fischertechnik_TXT_initramfs_defconfig 38 | mkdir -p $(BUILD_DIR)/initramfs 39 | $(BR_INIT_ENV) $(MAKE) O=$(BUILD_DIR)/initramfs -C $(ROOT_DIR)/buildroot fischertechnik_TXT_initramfs_defconfig 40 | 41 | $(ROOT_DIR)/buildroot/Makefile: 42 | git submodule update --init buildroot 43 | 44 | .PHONY: rootfs 45 | rootfs: $(BUILD_DIR)/rootfs/.config $(INITRAMFS_DIR)/initramfs.cpio 46 | $(MAKE) -C $(BUILD_DIR)/rootfs 47 | mkdir -p $(IMAGE_DIR) 48 | cp $(BUILD_DIR)/rootfs/images/rootfs.squashfs $(IMAGE_DIR)/rootfs.img 49 | cp $(BUILD_DIR)/rootfs/images/uImage $(IMAGE_DIR)/uImage 50 | cp $(BUILD_DIR)/rootfs/images/device_tree.dtb $(IMAGE_DIR)/am335x-kno_txt.dtb 51 | 52 | .PHONY: initramfs 53 | initramfs: $(BUILD_DIR)/initramfs/.config 54 | $(MAKE) -C $(BUILD_DIR)/initramfs 55 | 56 | .PHONY: copy-initramfs 57 | $(INITRAMFS_DIR)/initramfs.cpio copy-iniramfs: initramfs 58 | mkdir -p $(INITRAMFS_DIR) 59 | cp $(BUILD_DIR)/initramfs/images/rootfs.cpio $(INITRAMFS_DIR)/initramfs.cpio 60 | 61 | release: rootfs initramfs 62 | $(eval version := $(shell cat $(BUILD_DIR)/rootfs/target/etc/fw-ver.txt)) 63 | $(eval zipfile := $(IMAGE_DIR)/ftcommunity-txt-$(version).zip) 64 | rm -f $(zipfile) 65 | zip -j $(zipfile) $(IMAGE_DIR)/am335x-kno_txt.dtb $(IMAGE_DIR)/rootfs.img $(IMAGE_DIR)/uImage 66 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/device_table_initramfs.txt: -------------------------------------------------------------------------------- 1 | # See package/makedevs/README for details 2 | # 3 | # This device table is used to assign proper ownership and permissions 4 | # on various files. 5 | # 6 | # 7 | /media/sdcard d 755 0 0 - - - - - 8 | /media/sdcard/boot d 755 0 0 - - - - - 9 | /media/sdcard/root d 755 0 0 - - - - - 10 | /media/sdcard/data d 755 0 0 - - - - - 11 | /newroot d 755 0 0 - - - - - 12 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/device_table_rootfs.txt: -------------------------------------------------------------------------------- 1 | # See package/makedevs/README for details 2 | # 3 | # This device table is used to assign proper ownership and permissions 4 | # on various files. 5 | # 6 | # ftc/apps is also given to ftc to allow it to upload apps. The pre-installed 7 | # apps still belong to root and thus cannot be touched by ftc 8 | # 9 | # 10 | /opt/ftc/apps d 755 1001 1001 - - - - - 11 | /etc/default/launcher f 644 1001 1001 - - - - - 12 | /rom d 755 0 0 - - - - - 13 | /opt/fischertechnik r 755 1000 1000 - - - - - 14 | /media/sdcard d 755 0 0 - - - - - 15 | /media/sdcard/boot d 755 0 0 - - - - - 16 | /media/sdcard/root d 755 0 0 - - - - - 17 | /media/sdcard/data d 755 0 0 - - - - - 18 | /sbin/unix_chkpwd r 4755 0 0 - - - - - 19 | /etc/network/interfaces f 666 0 0 - - - - - 20 | /etc/locale f 666 0 0 - - - - - 21 | /etc/netreq_permissions f 666 0 0 - - - - - 22 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/ftc-logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/ftc-logo.xcf -------------------------------------------------------------------------------- /board/fischertechnik/TXT/initramfs/ftc-firstboot-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/initramfs/ftc-firstboot-failed.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/initramfs/ftc-firstboot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/initramfs/ftc-firstboot.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/initramfs/init: -------------------------------------------------------------------------------- 1 | #!/bin/busybox sh 2 | /bin/busybox --install -s 3 | 4 | export PATH=/bin:/sbin:/usr/bin:/usr/sbin 5 | 6 | move_kernel_mounts() { 7 | for dir in proc sys dev; do 8 | mount -o move $1$dir $2$dir 9 | done 10 | } 11 | 12 | # mount kernel filesystems 13 | mount -t proc proc /proc 14 | mount -t sysfs sysfs /sys 15 | mount -t devtmpfs devtmpfs /dev 16 | mkdir -p /dev/pts 17 | mkdir -p /dev/shm 18 | 19 | if ! [ -b /dev/mmcblk1p2 ] ; then 20 | if ! /repartition-sd-card ; then 21 | echo "failed to repartition the SD card. Dropping to a shell" 22 | exec /bin/sh 23 | fi 24 | fi 25 | 26 | # mount SD card partitions. 27 | mount -t vfat /dev/mmcblk1p1 /media/sdcard/boot -o dmask=022,fmask=133,flush 28 | mount -t ext4 /dev/mmcblk1p2 /media/sdcard/data 29 | mount -t squashfs /media/sdcard/boot/rootfs.img /media/sdcard/root -o loop,ro 30 | 31 | ROM_VERSION=$(cat /media/sdcard/root/etc/fw-ver.txt) 32 | ROOT_TYPE=ro 33 | if [ -r /media/sdcard/boot/rootfs.conf ]; then 34 | ROOT_TYPE=$(cat /media/sdcard/boot/rootfs.conf) 35 | fi 36 | 37 | if [ "${ROOT_TYPE}" = "rw" ] ; then 38 | mkdir -p /media/sdcard/data/overlay/rootfs 39 | mkdir -p /media/sdcard/data/overlay/.workdir/rootfs 40 | if [ -r /media/sdcard/data/overlay/rootfs/.version ]; then 41 | OVL_VERSION=$(cat /media/sdcard/data/overlay/rootfs/.version) 42 | if [ "${OVL_VERSION}" != "${ROM_VERSION}" ] ; then 43 | mv /media/sdcard/data/overlay/rootfs /media/sdcard/data/rootfs-overlay-old 44 | mkdir -p /media/sdcard/data/overlay/rootfs 45 | echo "${ROM_VERSION}" > /media/sdcard/data/overlay/rootfs/.version 46 | fi 47 | else 48 | echo "${ROM_VERSION}" > /media/sdcard/data/overlay/rootfs/.version 49 | fi 50 | mount -t overlay overlay -o lowerdir=/media/sdcard/root,upperdir=/media/sdcard/data/overlay/rootfs,workdir=/media/sdcard/data/overlay/.workdir/rootfs /newroot 51 | else 52 | mount -o bind /media/sdcard/root /newroot 53 | fi 54 | 55 | mount -o move /media/sdcard/boot /newroot/media/sdcard/boot 56 | mount -o move /media/sdcard/root /newroot/media/sdcard/root 57 | mount -o move /media/sdcard/data /newroot/media/sdcard/data 58 | move_kernel_mounts / /newroot/ 59 | exec switch_root /newroot /sbin/init 60 | 61 | #This will only be run if the exec above failed 62 | echo "Failed to switch_root. Dropping to a shell" 63 | move_kernel_mounts /newroot/ / 64 | exec /bin/sh 65 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/post-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TARGET=$1 3 | cp -af $BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/docs/favicon.ico $TARGET/var/www/ 4 | # disable writing log files. On SD card we actually have the space for this, so we can leave this on 5 | # mv $TARGET/etc/init.d/S01logging $TARGET/etc/init.d/M01logging||echo "Logging already turned off!" 6 | # Remove obsolete PM firmware load script 7 | rm -f "$TARGET/etc/init.d/S93-am335x-pm-firmware-load" 8 | 9 | # remove start scripts for openvpn 10 | rm -f "$TARGET/etc/init.d/S60openvpn" 11 | 12 | # remove xorg start script 13 | rm -f "$TARGET/etc/init.d/S40xorg" 14 | 15 | # remove unused firmware 16 | find "$TARGET/usr/lib/firmware/ti-connectivity" -iname "TIInit*.bts" ! -name "TIInit_11.8.32.bts" -type f -exec rm -f {} + 17 | find "$TARGET/usr/lib/firmware/ti-connectivity" -iname "wl*.bin" ! -name "wl18xx-fw-4.bin" ! -name "wl18xx-conf.bin" -exec rm -f {} + 18 | 19 | # Check if firmware version from the board version and tag match 20 | GIT_VERSION=$(git -C $BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH describe --tags --match='v*' 2>/dev/null) 21 | if [ -n "$GIT_VERSION" ] ; then 22 | BASE_VERSION=$(cat $BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH/board/fischertechnik/TXT/rootfs/etc/fw-ver.txt) 23 | if [[ "${GIT_VERSION}" == "v${BASE_VERSION}"* ]] ; then 24 | echo "v${BASE_VERSION} is a regular release" 25 | elif [ "${BASE_VERSION#*-}" = "rc" ]; then 26 | echo "v${BASE_VERSION} is an rc release" 27 | else 28 | echo "Version number $GIT_VERSION from 'git describe' does not match the base version $BASE_VERSION" 29 | echo "Please fix the base version in board/fischertechnik/TXT/rootfs/etc/fw-ver.txt" 30 | exit 1 31 | fi 32 | fi 33 | echo "done" 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xinit/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | set_locale() 5 | { 6 | source /etc/locale 7 | export LC_ALL 8 | } 9 | 10 | set_background() 11 | { 12 | xsetroot -solid '#5c96cc' 13 | } 14 | 15 | start_vnc() 16 | { 17 | ENABLED=no 18 | conffile=/etc/default/x11vnc 19 | # to enable, add ENABLED=yes to $conffile 20 | [ -f $conffile ] && . $conffile 21 | if [ $ENABLED = "yes" ]; then 22 | sudo -u ftc x11vnc -display :0 -forever & 23 | fi 24 | } 25 | 26 | start_launcher() 27 | { 28 | export PYTHONPYCACHEPREFIX=/home/ftc/.pycache 29 | sudo -u ftc PYTHONPATH=/opt/ftc /opt/ftc/launcher.py 30 | } 31 | 32 | set_locale 33 | set_background 34 | start_vnc 35 | while true; do 36 | start_launcher 37 | done 38 | 39 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xorg.conf: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fb" 3 | Load "shadow" 4 | Load "fbdevhw" 5 | EndSection 6 | 7 | Section "Device" 8 | Identifier "Configured Video Device" 9 | Driver "fbdev" 10 | Option "fbdev" "/dev/fb0" 11 | EndSection 12 | 13 | Section "Monitor" 14 | Identifier "Configured Monitor" 15 | DisplaySize 370 490 16 | EndSection 17 | 18 | Section "Screen" 19 | Identifier "Default Screen" 20 | Monitor "Configured Monitor" 21 | Device "Configured Video Device" 22 | SubSection "Display" 23 | Virtual 240 320 24 | EndSubSection 25 | EndSection 26 | 27 | Section "InputClass" 28 | Identifier "tslib touchscreen catchall" 29 | MatchIsTouchscreen "on" 30 | MatchDevicePath "/dev/input/event0" 31 | Driver "tslib" 32 | Option "TransformationMatrix" "100 0 0 0 75 0 0 0 6" 33 | EndSection 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xorg.conf.ccw: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fb" 3 | Load "shadow" 4 | Load "fbdevhw" 5 | EndSection 6 | 7 | Section "Device" 8 | Identifier "Configured Video Device" 9 | Driver "fbdev" 10 | Option "fbdev" "/dev/fb0" 11 | Option "Rotate" "CCW" 12 | EndSection 13 | 14 | Section "Monitor" 15 | Identifier "Configured Monitor" 16 | DisplaySize 370 490 17 | EndSection 18 | 19 | Section "Screen" 20 | Identifier "Default Screen" 21 | Monitor "Configured Monitor" 22 | Device "Configured Video Device" 23 | SubSection "Display" 24 | Virtual 240 320 25 | EndSubSection 26 | EndSection 27 | 28 | Section "InputClass" 29 | Identifier "tslib touchscreen catchall" 30 | MatchIsTouchscreen "on" 31 | MatchDevicePath "/dev/input/event0" 32 | Driver "tslib" 33 | Option "TransformationMatrix" "0 -75 6 100 0 0 0 0 6" 34 | EndSection 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xorg.conf.cw: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fb" 3 | Load "shadow" 4 | Load "fbdevhw" 5 | EndSection 6 | 7 | Section "Device" 8 | Identifier "Configured Video Device" 9 | Driver "fbdev" 10 | Option "fbdev" "/dev/fb0" 11 | Option "Rotate" "CW" 12 | EndSection 13 | 14 | Section "Monitor" 15 | Identifier "Configured Monitor" 16 | DisplaySize 370 490 17 | EndSection 18 | 19 | Section "Screen" 20 | Identifier "Default Screen" 21 | Monitor "Configured Monitor" 22 | Device "Configured Video Device" 23 | SubSection "Display" 24 | Virtual 240 320 25 | EndSubSection 26 | EndSection 27 | 28 | Section "InputClass" 29 | Identifier "tslib touchscreen catchall" 30 | MatchIsTouchscreen "on" 31 | MatchDevicePath "/dev/input/event0" 32 | Driver "tslib" 33 | Option "TransformationMatrix" "0 75 0 -100 0 6 0 0 6" 34 | EndSection 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xorg.conf.ud: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fb" 3 | Load "shadow" 4 | Load "fbdevhw" 5 | EndSection 6 | 7 | Section "Device" 8 | Identifier "Configured Video Device" 9 | Driver "fbdev" 10 | Option "fbdev" "/dev/fb0" 11 | Option "Rotate" "UD" 12 | EndSection 13 | 14 | Section "Monitor" 15 | Identifier "Configured Monitor" 16 | DisplaySize 370 490 17 | EndSection 18 | 19 | Section "Screen" 20 | Identifier "Default Screen" 21 | Monitor "Configured Monitor" 22 | Device "Configured Video Device" 23 | SubSection "Display" 24 | Virtual 240 320 25 | EndSubSection 26 | EndSection 27 | 28 | Section "InputClass" 29 | Identifier "tslib touchscreen catchall" 30 | MatchIsTouchscreen "on" 31 | MatchDevicePath "/dev/input/event0" 32 | Driver "tslib" 33 | Option "TransformationMatrix" "-100 0 6 0 -75 6 0 0 6" 34 | EndSection 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/X11/xorg.conf.up: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fb" 3 | Load "shadow" 4 | Load "fbdevhw" 5 | EndSection 6 | 7 | Section "Device" 8 | Identifier "Configured Video Device" 9 | Driver "fbdev" 10 | Option "fbdev" "/dev/fb0" 11 | EndSection 12 | 13 | Section "Monitor" 14 | Identifier "Configured Monitor" 15 | DisplaySize 370 490 16 | EndSection 17 | 18 | Section "Screen" 19 | Identifier "Default Screen" 20 | Monitor "Configured Monitor" 21 | Device "Configured Video Device" 22 | SubSection "Display" 23 | Virtual 240 320 24 | EndSubSection 25 | EndSection 26 | 27 | Section "InputClass" 28 | Identifier "tslib touchscreen catchall" 29 | MatchIsTouchscreen "on" 30 | MatchDevicePath "/dev/input/event0" 31 | Driver "tslib" 32 | Option "TransformationMatrix" "100 0 0 0 75 0 0 0 6" 33 | EndSection 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/default/launcher: -------------------------------------------------------------------------------- 1 | SCREEN_ROTATION=0 2 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/default/x11vnc: -------------------------------------------------------------------------------- 1 | # SECURITY NOTE: Enabling the VNC server 2 | # gives everyone with a network connection to 3 | # your TXT unrestricted access to all CFW features, 4 | # exactly as if they were sitting directly in front of it. 5 | # ENABLE VNC AT YOUR OWN RISK by uncommenting the next line 6 | #ENABLED=yes 7 | 8 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/dhcp/dhcpd.conf: -------------------------------------------------------------------------------- 1 | ddns-update-style none; 2 | option domain-name "local"; 3 | default-lease-time 600; 4 | max-lease-time 7200; 5 | 6 | authoritative; 7 | 8 | # usb0, compatible with original TXT firmware 9 | subnet 192.168.7.0 netmask 255.255.255.252 { 10 | range 192.168.7.1 192.168.7.1; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/fstab: -------------------------------------------------------------------------------- 1 | # 2 | tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 3 | tmpfs /tmp tmpfs mode=1777 0 0 4 | devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 5 | tmpfs /dev/shm tmpfs mode=0777 0 0 6 | overlay /etc overlay lowerdir=/media/sdcard/root/etc,upperdir=/media/sdcard/data/overlay/etc,workdir=/media/sdcard/data/overlay/.workdir/etc 0 0 7 | /media/sdcard/data/home /home bind bind 0 0 8 | /dev/ubi0_0 /rom ubifs ro 0 0 9 | /proc /rom/proc bind bind 0 0 10 | /dev /rom/dev bind bind 0 0 11 | /dev/pts /rom/dev/pts bind bind 0 0 12 | /dev/shm /rom/dev/shm bind bind 0 0 13 | /tmp /rom/tmp bind bind 0 0 14 | /sys /rom/sys bind bind 0 0 15 | /home/ROBOPro/ROBOProFiles /rom/opt/knobloch/ROBOPro bind bind 0 0 16 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/ftc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/etc/ftc-logo.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/ftc-shutdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/etc/ftc-shutdown.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/fw-ver.txt: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S01hwclock: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # writes back hwclock during shutdown 4 | 5 | case "$1" in 6 | stop|restart|reload|force-reload) 7 | # hwclock is read during startup in utc by rtc_cmos 8 | /usr/sbin/hwclock -w -u 9 | ;; 10 | esac 11 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S02fixes: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | check_104() { 4 | # uid mapping changed for user ROBOPro 5 | if [ `id -g ROBOPro` != 1008 || `id -u ROBOPro` != 1004 ]; then 6 | deluser ROBOPro 7 | delgroup ROBOPro 8 | addgroup -g 1008 ROBOPro 9 | adduser -h /opt/fischertechnik -s /bin/sh -G ROBOPro -D -H -u 1004 ROBOPro 10 | adduser ROBOPro users 11 | adduser ROBOPro tty 12 | adduser ROBOPro video 13 | adduser ROBOPro audio 14 | adduser ROBOPro i2c 15 | fi 16 | } 17 | 18 | check_105() { 19 | # ntp user was newly introduced in buildroot 2023.02.3 20 | if !id -u ntp; then 21 | adduser -s /bin/false -S -D -H -u 101 -G ntp ntp 22 | fi 23 | } 24 | 25 | case "$1" in 26 | start) 27 | check_104 28 | check_105 29 | ;; 30 | esac 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S10triggerhappy: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | NAME=thd 4 | DAEMON=/usr/sbin/$NAME 5 | PIDFILE=/var/run/$NAME.pid 6 | DAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --pidfile $PIDFILE --user root /dev/input/event*" 7 | 8 | # Sanity checks 9 | test -x $DAEMON || exit 0 10 | 11 | [ -r /etc/default/triggerhappy ] && . /etc/default/triggerhappy 12 | 13 | start() { 14 | printf "Starting $NAME: " 15 | start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ 16 | && echo "OK" || echo "FAIL" 17 | } 18 | 19 | stop() { 20 | printf "Stopping $NAME: " 21 | start-stop-daemon --stop --quiet --pidfile $PIDFILE \ 22 | && echo "OK" || echo "FAIL" 23 | } 24 | 25 | case "$1" in 26 | start) 27 | start 28 | ;; 29 | stop) 30 | stop 31 | ;; 32 | restart) 33 | stop 34 | sleep 1 35 | start 36 | ;; 37 | *) 38 | echo "Usage: $0 {start|stop|restart}" 39 | exit 1 40 | esac 41 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S40bluetooth: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ENABLE_FLAG=/etc/bluetooth/enabled 4 | DAEMON="bluetoothd" 5 | PIDFILE="/var/run/$DAEMON.pid" 6 | 7 | BLUETOOTHD_ARGS="-n" 8 | 9 | # shellcheck source=/dev/null 10 | [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" 11 | 12 | start() { 13 | printf 'Starting %s: ' "$DAEMON" 14 | if [ -f $ENABLE_FLAG ]; then 15 | # shellcheck disable=SC2086 # we need the word splitting 16 | start-stop-daemon -S -q -m -b -p "$PIDFILE" -x "/usr/libexec/bluetooth/$DAEMON" \ 17 | -- $BLUETOOTHD_ARGS 18 | status=$? 19 | if [ "$status" -eq 0 ]; then 20 | echo "OK" 21 | 22 | hciconfig hci0 up piscan 23 | else 24 | echo "FAIL" 25 | fi 26 | return "$status" 27 | else 28 | echo "SERVICE DISABLED" 29 | fi 30 | } 31 | 32 | stop() { 33 | printf 'Stopping %s: ' "$DAEMON" 34 | if [ -f $ENABLE_FLAG ]; then 35 | hciconfig hci0 down 36 | 37 | start-stop-daemon -K -q -p "$PIDFILE" 38 | status=$? 39 | if [ "$status" -eq 0 ]; then 40 | echo "OK" 41 | else 42 | echo "FAIL" 43 | fi 44 | return "$status" 45 | fi 46 | } 47 | 48 | restart() { 49 | stop 50 | sleep 1 51 | start 52 | } 53 | 54 | reload() { 55 | printf 'Reloading %s: ' "$DAEMON" 56 | start-stop-daemon -K -s HUP -q -p "$PIDFILE" 57 | status=$? 58 | if [ "$status" -eq 0 ]; then 59 | echo "OK" 60 | else 61 | echo "FAIL" 62 | fi 63 | return "$status" 64 | } 65 | 66 | case "$1" in 67 | start|stop|restart|reload) 68 | "$1";; 69 | enable) 70 | printf "Enabling bluetooth: " 71 | touch $ENABLE_FLAG 72 | echo "OK" 73 | "$0" start 74 | ;; 75 | disable) 76 | "$0" stop 77 | printf "Disabling bluetooth: " 78 | rm -f $ENABLE_FLAG 79 | echo "OK" 80 | ;; 81 | *) 82 | echo "Usage: $0 {start|stop|restart|reload}" 83 | exit 1 84 | esac 85 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S80touchscreen-calibration: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | start() { 4 | if calibrate-touchscreen is-uncommitted; then 5 | calibrate-touchscreen reset 6 | fi 7 | } 8 | 9 | stop() { 10 | echo "" 11 | } 12 | 13 | case "$1" in 14 | start) 15 | start 16 | ;; 17 | stop) 18 | stop 19 | ;; 20 | restart) 21 | stop 22 | start 23 | ;; 24 | *) 25 | echo "Usage: $0 {start}" 26 | exit 1 27 | esac 28 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S90launcher: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Starts Xorg 4 | # 5 | 6 | BIN=/usr/bin/Xorg 7 | PIDFILE=/var/run/xorg.pid 8 | 9 | LAUNCHER_CONFIG=/etc/default/launcher 10 | XORG_CONF=/etc/X11/xorg.conf 11 | SCREEN_ROTATION=0 12 | [ -e $LAUNCHER_CONFIG ] && . $LAUNCHER_CONFIG 13 | use_config() { 14 | config=$XORG_CONF.$1 15 | if ! diff -N -q $XORG_CONF $config; then 16 | cp -f $config $XORG_CONF 17 | fi 18 | } 19 | case $SCREEN_ROTATION in 20 | 90) use_config ccw;; 21 | 180) use_config ud;; 22 | 270) use_config cw;; 23 | *) use_config up;; 24 | esac 25 | 26 | 27 | # ":0.0 vt01" makes sure Xorg finds the correct terminal. 28 | # -nocursor hides the mouse pointer 29 | XORG_ARGS=":0.0 vt01 -s 0 -nocursor" 30 | 31 | start() { 32 | printf "Starting Xorg: " 33 | start-stop-daemon -S -q -b -m -p $PIDFILE --exec xinit -- /etc/X11/xinit/xinitrc -- $BIN $XORG_ARGS 34 | [ $? = 0 ] && echo "OK" || echo "FAIL" 35 | } 36 | 37 | stop() { 38 | printf "Stopping Xorg: " 39 | start-stop-daemon -K -q -p $PIDFILE 40 | [ $? = 0 ] && echo "OK" || echo "FAIL" 41 | } 42 | 43 | restart() { 44 | stop 45 | sleep 2 46 | start 47 | } 48 | 49 | case "$1" in 50 | start) 51 | start 52 | ;; 53 | stop) 54 | stop 55 | ;; 56 | restart|reload) 57 | restart 58 | ;; 59 | *) 60 | echo "Usage: $0 {start|stop|restart}" 61 | exit 1 62 | esac 63 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/S91rompermissions: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # this fixes permissions of rom files 4 | 5 | start() { 6 | src=/rom/opt/knobloch/SoundFiles 7 | dst=/home/ROBOPro/SoundFiles 8 | if [ ! -e $dst ]; then 9 | cp -a $src $dst 10 | chmod 755 $dst 11 | fi 12 | mount --bind $dst $src 13 | } 14 | 15 | stop() { 16 | echo "" 17 | } 18 | 19 | case "$1" in 20 | start) 21 | start 22 | ;; 23 | stop) 24 | stop 25 | ;; 26 | restart) 27 | stop 28 | start 29 | ;; 30 | *) 31 | echo "Usage: $0 {start}" 32 | exit 1 33 | esac 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/rcK: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # stop X related stuff 4 | for i in $(ls -r /etc/init.d/S9?*) ;do 5 | $i stop 6 | done 7 | 8 | sleep 1 9 | 10 | # load ftc splash image. Use FT colors for progress bar 11 | psplash --filename /etc/ftc-shutdown.png -y 212 --BarCol FC1504 --BarBkCol 347ECC --BkCol 000000 & 12 | 13 | 14 | # count scripts to be executed 15 | scripts=$(ls -r /etc/init.d/S[012345678]?*) 16 | SPLASH_MAX=0 17 | SPLASH_LAST="" 18 | for i in $scripts; do 19 | # Ignore dangling symlinks (if any). 20 | [ ! -f "$i" ] && continue 21 | SPLASH_MAX=$((SPLASH_MAX+1)) 22 | SPLASH_LAST="$i" 23 | done 24 | 25 | # calculate the step size for the progress bar 26 | SPLASH_STEP=$((100/SPLASH_MAX)) 27 | 28 | # Stop all init scripts in /etc/init.d 29 | # executing them in reversed numerical order. 30 | # 31 | SPLASH=100 32 | for i in $scripts; do 33 | 34 | sleep 0.1 35 | 36 | # Ignore dangling symlinks (if any). 37 | [ ! -f "$i" ] && continue 38 | 39 | SPLASH=$((SPLASH-SPLASH_STEP)) 40 | 41 | if [ "$i" == "$SPLASH_LAST" ] ; then 42 | psplash-write "PROGRESS 0" 43 | psplash-write "QUIT" 44 | else 45 | psplash-write "PROGRESS $SPLASH" 46 | fi 47 | 48 | case "$i" in 49 | *.sh) 50 | # Source shell script for speed. 51 | ( 52 | trap - INT QUIT TSTP 53 | set stop 54 | . $i 55 | ) 56 | ;; 57 | *) 58 | # No sh extension, so fork subprocess. 59 | $i stop 60 | ;; 61 | esac 62 | done 63 | 64 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/init.d/rcS: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # disable ASLR. Needed for online some modes of libROBOPRo 4 | echo 0 > /proc/sys/kernel/randomize_va_space 5 | 6 | # hide cursor; disable screensaver; disable vesa powerdown 7 | echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty1 8 | 9 | # load ftc splash image. Use FT colors for progress bar 10 | psplash -n --filename /etc/ftc-logo.png -y 212 --BarCol FCCE04 --BarBkCol 347ECC --BkCol 000000 & 11 | 12 | # load locale if present 13 | if [ -r /etc/locale ]; then 14 | . /etc/locale 15 | export LANG LANGUAGE LC_ALL 16 | fi 17 | 18 | # count scripts to be executed 19 | SPLASH_MAX=0 20 | SPLASH_LAST="" 21 | for i in /etc/init.d/S??* ;do 22 | # Ignore dangling symlinks (if any). 23 | [ ! -f "$i" ] && continue 24 | SPLASH_MAX=$((SPLASH_MAX+1)) 25 | SPLASH_LAST="$i" 26 | done 27 | 28 | # calculate the step size for the progress bar 29 | SPLASH_STEP=$((100/SPLASH_MAX)) 30 | 31 | # Start all init scripts in /etc/init.d 32 | # executing them in numerical order. 33 | # 34 | SPLASH=0 35 | for i in /etc/init.d/S??* ;do 36 | 37 | # Ignore dangling symlinks (if any). 38 | [ ! -f "$i" ] && continue 39 | 40 | SPLASH=$((SPLASH+SPLASH_STEP)) 41 | 42 | if [ "$i" == "$SPLASH_LAST" ] ; then 43 | psplash-write "PROGRESS 100" 44 | psplash-write "QUIT" 45 | else 46 | psplash-write "PROGRESS $SPLASH" 47 | fi 48 | 49 | case "$i" in 50 | *.sh) 51 | # Source shell script for speed. 52 | ( 53 | trap - INT QUIT TSTP 54 | set start 55 | . $i 56 | ) 57 | ;; 58 | *) 59 | # No sh extension, so fork subprocess. 60 | $i start 61 | ;; 62 | esac 63 | done 64 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/inittab: -------------------------------------------------------------------------------- 1 | # /etc/inittab 2 | # 3 | # Copyright (C) 2001 Erik Andersen 4 | # 5 | # Note: BusyBox init doesn't support runlevels. The runlevels field is 6 | # completely ignored by BusyBox init. If you want runlevels, use 7 | # sysvinit. 8 | # 9 | # Format for each entry: ::: 10 | # 11 | # id == tty to run on, or empty for /dev/console 12 | # runlevels == ignored 13 | # action == one of sysinit, respawn, askfirst, wait, and once 14 | # process == program to run 15 | 16 | # Startup the system 17 | ::sysinit:/usr/sbin/ubiattach -p /dev/mtd10 -d0 18 | ::sysinit:/bin/mount -a 19 | ::sysinit:/bin/hostname -F /etc/hostname 20 | # now run any rc scripts 21 | ::sysinit:/etc/init.d/rcS 22 | 23 | # Put a getty on the serial port 24 | ttyO0::respawn:/sbin/getty -L ttyO0 115200 linux 25 | 26 | # Stuff to do before rebooting 27 | ::shutdown:/etc/init.d/rcK 28 | ::shutdown:/usr/sbin/killall5 -TERM 29 | ::shutdown:/bin/sleep 2 30 | ::shutdown:/usr/sbin/killall5 -KILL 31 | ::shutdown:/bin/mount -o remount,ro / 32 | ::shutdown:/bin/umount -a -r 33 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/lighttpd/conf.d/cgi.conf: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | ## 3 | ## CGI modules 4 | ## --------------- 5 | ## 6 | ## http://www.lighttpd.net/documentation/cgi.html 7 | ## 8 | server.modules += ( "mod_cgi" ) 9 | 10 | ## 11 | ## Plain old CGI handling 12 | ## 13 | ## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini. 14 | ## 15 | cgi.assign = ( ".py" => "/usr/bin/python" ) 16 | 17 | ## 18 | ## to get the old cgi-bin behavior of apache 19 | ## 20 | ## Note: make sure that mod_alias is loaded if you uncomment the 21 | ## next line. (see modules.conf) 22 | ## 23 | #alias.url += ( "/cgi-bin" => server_root + "/cgi-bin" ) 24 | #$HTTP["url"] =~ "^/cgi-bin" { 25 | # cgi.assign = ( "" => "" ) 26 | #} 27 | 28 | ## 29 | ####################################################################### 30 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/lighttpd/conf.d/expire.conf: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | ## 3 | ## Expire Module 4 | ## --------------- 5 | ## 6 | ## See http://www.lighttpd.net/documentation/expire.html 7 | ## 8 | server.modules += ( "mod_expire" ) 9 | 10 | ## 11 | ## assignes a expiration to all files below the specified path. The 12 | ## specification of the time is made up of: 13 | ## 14 | ## 15 | ## 16 | expire.url = ( 17 | "/index.html" => "access plus 5 seconds" 18 | ) 19 | 20 | ## 21 | ####################################################################### 22 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/locale: -------------------------------------------------------------------------------- 1 | LANG="en_US.UTF-8" 2 | LC_ALL="en_US.UTF-8" 3 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/netreq_permissions: -------------------------------------------------------------------------------- 1 | # netreq permissions 2 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/network/interfaces: -------------------------------------------------------------------------------- 1 | auto lo 2 | auto usb0 3 | auto wlan0 4 | auto eth0 5 | 6 | iface lo inet loopback 7 | 8 | iface usb0 inet static 9 | pre-up modprobe g_ether 10 | post-down modprobe -r g_ether 11 | address 192.168.7.2 12 | broadcast 192.168.7.3 13 | netmask 255.255.255.252 14 | 15 | iface wlan0 inet dhcp 16 | udhcpc_opts -t 0 & 17 | pre-up wpa_supplicant -B -Dnl80211 -iwlan0 -I/etc/wpa_supplicant.conf -c/etc/network/wpa.wlan0.conf 18 | post-down killall -q wpa_supplicant 19 | 20 | iface eth0 inet dhcp 21 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/network/wpa.wlan0.conf: -------------------------------------------------------------------------------- 1 | # no wifi configuration saved yet -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/pam.d/login: -------------------------------------------------------------------------------- 1 | #%PAM-1.0 2 | auth required /lib/security/pam_unix.so shadow nullok nodelay 3 | account required /lib/security/pam_nologin.so 4 | account required /lib/security/pam_unix.so 5 | password required /lib/security/pam_unix.so shadow nullok use_authtok 6 | session required /lib/security/pam_unix.so 7 | session required /lib/security/pam_limits.so 8 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/pam.d/sshd: -------------------------------------------------------------------------------- 1 | auth [success=ok default=2] /lib/security/pam_exec.so quiet /sbin/pam_null_passwd 2 | auth sufficient /lib/security/pam_exec.so quiet /sbin/pam_touchscreen Allow SSH login as $PAM_USER? 3 | auth requisite /lib/security/pam_deny.so 4 | auth required /lib/security/pam_unix.so shadow nodelay 5 | account required /lib/security/pam_nologin.so 6 | account required /lib/security/pam_unix.so 7 | password required /lib/security/pam_unix.so shadow nullok use_authtok 8 | session required /lib/security/pam_unix.so 9 | session required /lib/security/pam_limits.so 10 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/pam.d/sudo: -------------------------------------------------------------------------------- 1 | auth sufficient /lib/security/pam_rootok.so 2 | auth [success=ok default=2] /lib/security/pam_exec.so quiet /sbin/pam_null_passwd 3 | auth sufficient /lib/security/pam_exec.so quiet /sbin/pam_touchscreen Allow root access for $PAM_USER? 4 | auth requisite /lib/security/pam_deny.so 5 | auth required /lib/security/pam_unix.so shadow 6 | account required /lib/security/pam_unix.so 7 | password required /lib/security/pam_unix.so shadow use_authtok 8 | session required /lib/security/pam_unix.so 9 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/pointercal: -------------------------------------------------------------------------------- 1 | -4465 42 17002038 25 5774 -1288676 65536 240 320 -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/profile.d/ftc.sh: -------------------------------------------------------------------------------- 1 | # ftc-specific environment variables 2 | export PYTHONPATH=/opt/ftc 3 | export DISPLAY=:0 4 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/bluetooth: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for bluetooth setup 3 | 4 | ftc ALL = NOPASSWD: /usr/bin/hcitool, /etc/init.d/S40bluetooth, /bin/pkill -SIGINT hcitool 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/ft-gui: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for wifi setup 3 | 4 | ftc ALL = NOPASSWD: /opt/fischertechnik/start-txtcontrol 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/network: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for wifi setup 3 | 4 | ftc ALL = NOPASSWD: /usr/bin/netreq, /sbin/route, /sbin/ifconfig, /sbin/udhcpc, /bin/pkill -SIG* -f udhcpc -R -n -p * -i * 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/shutdown: -------------------------------------------------------------------------------- 1 | ## Allow ftc to halt/reboot the system 2 | ftc ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff 3 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/system-update: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for system updates 3 | 4 | ftc ALL = NOPASSWD: /sbin/system-update 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/touchscreen-calibration: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for changing display settings 3 | ftc ALL = NOPASSWD: /sbin/calibrate-touchscreen, /etc/init.d/S90launcher restart -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/sudoers.d/wifi: -------------------------------------------------------------------------------- 1 | ## Permissions for ftc access to programs required 2 | ## for wifi setup 3 | 4 | ftc ALL = NOPASSWD: /usr/sbin/wpa_cli, /sbin/udhcpc, /usr/bin/killall -SIGUSR1 udhcpc 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/triggerhappy/triggers.d/poweroff.conf: -------------------------------------------------------------------------------- 1 | KEY_POWER@ 1 @w1 2 | KEY_POWER 0 @ 3 | KEY_POWER@w1 2 @w2 4 | KEY_POWER@w2 2 @w3 5 | KEY_POWER@w3 2 @w4 6 | KEY_POWER@w4 2 @w5 7 | KEY_POWER@w5 2 @w6 8 | KEY_POWER@w6 2 @w7 9 | KEY_POWER@w7 2 @w8 10 | KEY_POWER@w8 2 @w9 11 | KEY_POWER@w9 2 @w10 12 | KEY_POWER@w10 2 @w11 13 | KEY_POWER@w11 2 @w12 14 | KEY_POWER@w12 2 @w13 15 | KEY_POWER@w13 2 @w14 16 | KEY_POWER@w14 2 @w15 17 | KEY_POWER@w15 2 @w16 18 | KEY_POWER@w16 2 @w17 19 | KEY_POWER@w17 2 @w18 20 | KEY_POWER@w18 2 @w19 21 | KEY_POWER@w19 2 @go 22 | KEY_POWER@go 2 /sbin/poweroff 23 | KEY_POWER@go 2 @done 24 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/40-fischertechnik_interfaces.rules: -------------------------------------------------------------------------------- 1 | #Rule for Robo Interface 2 | ATTR{idVendor}=="146a", ATTR{idProduct}=="0001", SUBSYSTEMS=="usb", ACTION=="add", MODE="0660", GROUP="gpio" 3 | #Rule for Robo Extension 4 | ATTR{idVendor}=="146a", ATTR{idProduct}=="0002", SUBSYSTEMS=="usb", ACTION=="add", MODE="0660", GROUP="gpio" 5 | #Rule for RF Data Link 6 | ATTR{idVendor}=="146a", ATTR{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0660", GROUP="gpio" 7 | #Rule for Robo Connect Box 8 | ATTR{idVendor}=="146a", ATTR{idProduct}=="0001", SUBSYSTEMS=="usb", ACTION=="add", MODE="0660", GROUP="gpio" 9 | #Rule for Robo LT Controller 10 | ATTR{idVendor}=="146a", ATTR{idProduct}=="000a", SUBSYSTEMS=="usb", ACTION=="add", MODE="0660", GROUP="gpio" 11 | #Rule for Robo TX Controller 12 | ATTRS{idVendor}=="221d", ATTRS{idProduct}=="1000", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 221d 1000 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'" 13 | #Rule to attach btsmart controller to ftdi driver 14 | ACTION=="add", ATTRS{idVendor}=="221d", ATTRS{idProduct}=="0005", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 221d 0005 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'" 15 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/40-lego_interfaces.rules: -------------------------------------------------------------------------------- 1 | ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0600", GROUP="gpio" 2 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/60-i2c-tools.rules: -------------------------------------------------------------------------------- 1 | # give full rw rights to i2c devices to i2c group 2 | KERNEL=="i2c-*" , GROUP="i2c", MODE="0660" 3 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/99-USBasp.rules: -------------------------------------------------------------------------------- 1 | # USBasp - USB programmer for Atmel AVR controllers 2 | # Copy this file to /etc/udev/rules.d so 3 | 4 | # According to http://www.ladyada.net/make/usbtinyisp/avrdude.html 5 | # The udev examples given don't work on some systems as the SYSFS parameter is deprecated. 6 | # The following rule works on recent Ubuntu systems and should probably work on other newer Linux systems: 7 | SUBSYSTEM=="usb", ATTR{product}=="USBasp", ATTR{idProduct}=="05dc", ATTRS{idVendor}=="16c0", MODE="0666" 8 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/99-ftduino.rules: -------------------------------------------------------------------------------- 1 | ATTRS{idVendor}=="1c40" ATTRS{idProduct}=="0537", ENV{ID_MM_DEVICE_IGNORE}="1" 2 | ATTRS{idVendor}=="1c40" ATTRS{idProduct}=="0538", ENV{ID_MM_DEVICE_IGNORE}="1" 3 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/udev/rules.d/99-permissions.rules: -------------------------------------------------------------------------------- 1 | KERNEL=="fb0", GROUP="video", MODE="0660" 2 | KERNEL=="event0", GROUP="video", MODE="0660" 3 | KERNEL=="event1", GROUP="video", MODE="0660" 4 | KERNEL=="spidev1.0", GROUP="video", MODE="0660" 5 | KERNEL=="tty0", GROUP="tty", MODE="0660" 6 | KERNEL=="tty1", GROUP="tty", MODE="0660" 7 | KERNEL=="ttyO2", GROUP="tty", MODE="0660" 8 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/etc/wpa_supplicant.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=/var/run/wpa_supplicant 2 | ap_scan=1 3 | update_config=1 4 | bgscan="simple:30:-60:3600" 5 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/fischertechnik/run-txtcontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | while [ -f /run/txtcontrol-service -o -f /run/txtcontrol-app ] ; do 4 | if [ -f /run/txtcontrol-app ] ; then 5 | DISPLAY="" 6 | else 7 | DISPLAY="SDL_VIDEODRIVER=dummy" 8 | fi 9 | chown -R ROBOPro:ROBOPro /home/ROBOPro 10 | chroot /rom/ su - ROBOPro -c "$DISPLAY ./TxtControlMain /dev/ttyO2 65000" 11 | done 12 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/fischertechnik/start-txtcontrol: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # start/stop TxtControlMain 4 | # 5 | 6 | start_txtcontrol() { 7 | if pidof run-txtcontrol >/dev/null ; then 8 | kill_txtcontrol 9 | else 10 | screen -A -m -d -S ROBOPRO /opt/fischertechnik/run-txtcontrol 11 | fi 12 | } 13 | 14 | kill_txtcontrol() { 15 | killall -q -QUIT TxtControlMain 16 | killall -q -TERM TxtControlMain 17 | killall -q -TERM TxtControlMain 18 | } 19 | 20 | case "$1" in 21 | start|start-service) 22 | touch /run/txtcontrol-service 23 | start_txtcontrol 24 | ;; 25 | stop-service) 26 | rm -f /run/txtcontrol-service 27 | kill_txtcontrol 28 | ;; 29 | start-main) 30 | touch /run/txtcontrol-app 31 | start_txtcontrol 32 | ;; 33 | stop-main) 34 | rm -f /run/txtcontrol-app 35 | kill_txtcontrol 36 | ;; 37 | stop) 38 | rm -f /run/txtcontrol-app 39 | rm -f /run/txtcontrol-service 40 | kill_txtcontrol 41 | ;; 42 | restart) 43 | kill_txtcontrol 44 | start_txtcontrol 45 | ;; 46 | *) 47 | echo "Usage: $0 {start|stop|start-main|stop-main}" 48 | exit 1 49 | esac 50 | 51 | exit $? 52 | 53 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/TxtStyle.py: -------------------------------------------------------------------------------- 1 | # 2 | # TxtStyle 3 | # 4 | # directly inherited from TouchStyle 5 | # https://github.com/harbaum/TouchUI 6 | # 7 | 8 | from TouchStyle import * 9 | 10 | def TxtSetStyle(self): 11 | TouchSetStyle() 12 | 13 | class TxtMenu(TouchMenu): pass 14 | class TxtTitle(TouchTitle): pass 15 | class TxtBaseWidget(TouchBaseWidget): pass 16 | class TxtWindow(TouchWindow): pass 17 | class TxtDialog(TouchDialog): pass 18 | class TxtMessageBox(TouchMessageBox): pass 19 | class TxtApplication(TouchApplication): pass 20 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/about_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/about_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | The TXT firmware community edition 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |

The TXT firmware community edition

19 | 20 |

21 | 22 | This is the community edition of the FischerTechnik TXT 23 | firmware.
24 | 25 | All source code can be found in 26 | the ftCommunity 27 | repository at github. 28 | 29 |

30 | 31 |

Licenses

32 | 33 | This firmware consists of various open source projects distributed 34 | under different open source licenses. These include: 35 | 36 |
    37 |
  • GPL: Most code comes under this license
  • 38 |
  • LGPL: Most libraries are use this license
  • 39 |
  • MIT: Another popular license
  • 40 |
41 | 42 | Please refer to 43 | the ftCommunity 44 | repository about the licensing of specific packages. 45 | 46 |

47 | 48 |

49 | 50 |
51 | 52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: About 3 | category: System 4 | author: Till Harbaum <till@harbaum.org> 5 | url: https://github.com/ftCommunity/ftcommunity-TXT 6 | html: index.html 7 | icon: icon.png 8 | desc: About the community firmware 9 | exec: about.py 10 | managed: launcher-plugin 11 | uuid: 3550e4e0-330c-42a9-810a-ca0ff1e42fd4 12 | 13 | [de] 14 | name: Über 15 | desc: Über die Community-Firmware 16 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/mit.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/about/mit_de.txt: -------------------------------------------------------------------------------- 1 | Die MIT-Lizenz (MIT) 2 | 3 | Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software 4 | und der zugehörigen Dokumentationen (die "Software") erhält, die 5 | Erlaubnis erteilt, sie uneingeschränkt zu nutzen, inklusive und ohne 6 | Ausnahme mit dem Recht, sie zu verwenden, zu kopieren, zu verändern, 7 | zusammenzufügen, zu veröffentlichen, zu verbreiten, zu 8 | unterlizenzieren und/oder zu verkaufen, und Personen, denen diese 9 | Software überlassen wird, diese Rechte zu verschaffen, unter den 10 | folgenden Bedingungen: 11 | 12 | Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in 13 | allen Kopien oder Teilkopien der Software beizulegen. 14 | 15 | DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE 16 | BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN 17 | VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER 18 | RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND 19 | DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE 20 | ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, 21 | EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER 22 | SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN. 23 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/bluetooth_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/bluetooth_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/bluetooth_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | BTRC 5 | 6 | 7 | The BT Control Set server is running. 8 | Der BT-Control-Set-Server ist aktiv. 9 | 10 | 11 | 12 | You can connect with the blue transmitter from the BT Control Set or with a smart phone running the BlueTooth Control app. 13 | Du kannst Dich mit dem blauen Sender aus dem BT-Control-Set verbinden oder mit einem Smart-Phone auf dem die BlueTooth-Control-App läuft. 14 | 15 | 16 | 17 | Reboot your TXT to return to normal bluetooth operation. 18 | Starte Deinen TXT neu, um zum normalen Bluetooth-Betrieb zurück zu kehren. 19 | 20 | 21 | 22 | FtcGuiApplication 23 | 24 | 25 | Bluetooth 26 | Bluetooth 27 | 28 | 29 | 30 | enabled 31 | eingeschaltet 32 | 33 | 34 | 35 | BT Address: 36 | BT-Adresse: 37 | 38 | 39 | 40 | Name: 41 | Name: 42 | 43 | 44 | 45 | BT Control Set 46 | BT-Control-Set 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/bluetooth/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Bluetooth 3 | category: System 4 | author: Till Harbaum <till@harbaum.org> 5 | icon: icon.png 6 | desc: Bluetooth config 7 | exec: bluetooth.py 8 | managed: launcher-plugin 9 | uuid: 8ea0b4a1-24e4-4ee0-b1b9-e087caf5d104 10 | 11 | [de] 12 | name: Bluetooth 13 | desc: Bluetooth-Konfiguration 14 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/display/display_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/display/display_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/display/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/display/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/display/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Display 3 | category: System 4 | author: Richard Kunze <richard.kunze@web.de> 5 | icon: icon.png 6 | desc: Display settings 7 | exec: display.py 8 | managed: launcher-plugin 9 | uuid: ce3e3a3e-2641-42e6-92ed-f15e49ceea29 10 | 11 | [de] 12 | name: Display 13 | desc: Bildschirm-Einstellungen 14 | 15 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/ftgui/ftgui.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys, os, subprocess,time 5 | from TouchStyle import * 6 | from launcher import LauncherPlugin 7 | 8 | SCRIPT = "/opt/fischertechnik/start-txtcontrol" 9 | 10 | # subclass the txtwidget to catch the close event 11 | class FTGUIBaseWidget(TouchBaseWidget): 12 | def __init__(self): 13 | TouchBaseWidget.__init__(self) 14 | 15 | def close(self): 16 | subprocess.Popen(["sudo", SCRIPT, "stop-main"]) 17 | time.sleep(3) 18 | TouchBaseWidget.close(self) 19 | 20 | class FtcGuiPlugin(LauncherPlugin): 21 | def __init__(self, application): 22 | LauncherPlugin.__init__(self, application) 23 | 24 | self.w = FTGUIBaseWidget() 25 | self.w.show() 26 | 27 | subprocess.Popen(["sudo", SCRIPT, "start-main"]) 28 | 29 | if __name__ == "__main__": 30 | class FtcGuiApplication(TouchApplication): 31 | def __init__(self, args): 32 | super().__init__(args) 33 | module = FtcGuiPlugin(self) 34 | self.exec_() 35 | FtcGuiApplication(sys.argv) 36 | else: 37 | def createPlugin(launcher): 38 | return FtcGuiPlugin(launcher) 39 | 40 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/ftgui/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/ftgui/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/ftgui/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: FT-GUI 3 | category: System 4 | icon: icon.png 5 | desc: Start the original TXT GUI 6 | exec: ftgui.py 7 | managed: launcher-plugin 8 | uuid: bda5dcf8-cbb4-42d7-8517-3245f15373bf 9 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/dutch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/dutch.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/english.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/english.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/french.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/french.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/german.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/german.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | lang 5 | 6 | 7 | English 8 | Englisch 9 | 10 | 11 | 12 | German 13 | Deutsch 14 | 15 | 16 | 17 | Dutch 18 | Holländisch 19 | 20 | 21 | 22 | French 23 | Französisch 24 | 25 | 26 | 27 | main 28 | 29 | 30 | Language 31 | Sprache 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_fr.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_fr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | lang 5 | 6 | 7 | English 8 | Anglais 9 | 10 | 11 | 12 | German 13 | Allemand 14 | 15 | 16 | 17 | Dutch 18 | Néerlandais 19 | 20 | 21 | 22 | French 23 | Français 24 | 25 | 26 | 27 | main 28 | 29 | 30 | Language 31 | Langue 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_nl.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_nl.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/language_nl.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | lang 5 | 6 | 7 | English 8 | Engels 9 | 10 | 11 | 12 | German 13 | Duits 14 | 15 | 16 | 17 | Dutch 18 | Nederlands 19 | 20 | 21 | 22 | French 23 | Frans 24 | 25 | 26 | 27 | main 28 | 29 | 30 | Language 31 | Taal 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/language/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Language 3 | category: System 4 | author: Till Harbaum <till@harbaum.org> 5 | icon: icon.png 6 | desc: Language selection 7 | exec: language.py 8 | managed: launcher-plugin 9 | uuid: e205398c-71c2-4d85-a814-f6fa2d4033d2 10 | 11 | [de] 12 | name: Sprache 13 | desc: Sprachauswahl 14 | 15 | [fr] 16 | name: Langue 17 | desc: Sélection de la langue 18 | 19 | [nl] 20 | name: Taal 21 | desc: Taal selectie 22 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/allow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/allow.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/deny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/deny.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Network 3 | category: System 4 | icon: icon.png 5 | desc: Network information and configuration tool 6 | exec: network.py 7 | managed: launcher-plugin 8 | uuid: 6d0ef6d4-4b22-4c1c-86fd-4959ff6ecce4 9 | version: 2.0 10 | 11 | [de] 12 | name: Netzwerk 13 | desc: Netzwerk-Informationen und -Einstellungen 14 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/network_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/network/network_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/installed.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Store 3 | category: System 4 | author: Till Harbaum <till@harbaum.org> 5 | icon: icon.png 6 | desc: Download of new applications 7 | exec: store.py 8 | managed: launcher-plugin 9 | uuid: 7b7f98ce-1d37-4884-bfa1-44f06f1ba991 10 | version: 1.0 11 | firmware: >=0.9 12 | 13 | [de] 14 | name: Store 15 | desc: Herunterladen neuer Applikationen, "App-Store" 16 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/not_installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/not_installed.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/not_installed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 28 | 46 | 53 | 54 | 56 | 57 | 59 | image/svg+xml 60 | 62 | 63 | 64 | 65 | 66 | 71 | 72 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/store_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/store_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/update_available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/store/update_available.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: WLAN 3 | category: System 4 | icon: icon.png 5 | desc: Wireless LAN configuration 6 | exec: wlan.py 7 | managed: launcher-plugin 8 | uuid: b91b7e56-345b-4704-85aa-1486e4fcc522 9 | version: 1.2 10 | firmware: 0.9 11 | 12 | [de] 13 | name: WLAN 14 | desc: Konfiguration des drahtlosen LAN (WLAN) 15 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/wlan_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/wlan_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/system/wlan/wlan_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Main 5 | 6 | 7 | WLAN 8 | WLAN 9 | 10 | 11 | 12 | Encryption: 13 | Verschlüsselung: 14 | 15 | 16 | 17 | Connect 18 | Verbinde 19 | 20 | 21 | 22 | Key 23 | Schlüssel 24 | 25 | 26 | 27 | connected 28 | verbunden 29 | 30 | 31 | 32 | Key: 33 | Schlüssel: 34 | 35 | 36 | 37 | Set Country 38 | Land setzen 39 | 40 | 41 | 42 | placeholder 43 | 44 | 45 | key 46 | Schlüssel 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/apps/user: -------------------------------------------------------------------------------- 1 | ../../../home/ftc/apps -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/launcher_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/launcher_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/launcher_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Category 5 | 6 | 7 | System 8 | System 9 | 10 | 11 | 12 | Models 13 | Modelle 14 | 15 | 16 | 17 | Tools 18 | Werkzeuge 19 | 20 | 21 | 22 | Demos 23 | Demos 24 | 25 | 26 | 27 | All 28 | Alle 29 | 30 | 31 | 32 | Dialog 33 | 34 | 35 | Ok 36 | Ok 37 | 38 | 39 | 40 | Cancel 41 | Abbruch 42 | 43 | 44 | 45 | Folder 46 | 47 | 48 | Select 49 | Auswählen 50 | 51 | 52 | 53 | Messages 54 | 55 | 56 | Shutting down... 57 | Herunterfahren... 58 | 59 | 60 | 61 | Rebooting... 62 | Neustart... 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | class LoggerWriter(): 4 | def __init__(self, logger, level): 5 | self.logger = logger 6 | self.level = level 7 | self.buffer = '' 8 | 9 | def write(self, message): 10 | if '\n' not in message: 11 | self.buffer += message 12 | else: 13 | parts = message.split('\n') 14 | if self.buffer: 15 | s = self.buffer + parts.pop(0) 16 | self.logger.log(self.level, s) 17 | self.buffer = parts.pop() 18 | for part in parts: 19 | self.logger.log(self.level, part) 20 | 21 | def flush(self): 22 | # doesn't actually do anything, but might be expected of a file-like 23 | # object - so optional depending on your situation 24 | pass 25 | 26 | def close(self): 27 | # doesn't actually do anything, but might be expected of a file-like 28 | # object - so optional depending on your situation. You might want 29 | # to set a flag so that later calls to write raise an exception 30 | pass 31 | 32 | 33 | def init_logger(filename=''): 34 | import sys 35 | 36 | 37 | logger = logging.getLogger('launcher') 38 | logger.setLevel(logging.DEBUG) 39 | handlers=[] 40 | 41 | ch = logging.StreamHandler(sys.stdout) 42 | ch.setLevel(logging.DEBUG) 43 | handlers.append(ch) 44 | #logger.addHandler(ch) 45 | 46 | if filename: 47 | fh = logging.FileHandler(filename) 48 | fh.setLevel(logging.DEBUG) 49 | handlers.append(fh) 50 | # logger.addHandler(fh) 51 | 52 | logging.basicConfig(level=logging.DEBUG, handlers=handlers) 53 | 54 | #info_fp = LoggerWriter(logger, logging.INFO) 55 | #debug_fp = LoggerWriter(logger, logging.DEBUG) 56 | #print('An INFO message', file=info_fp) 57 | #print('A DEBUG message', file=debug_fp) 58 | 59 | sys.stdout = LoggerWriter(logger, logging.INFO) 60 | sys.stderr = LoggerWriter(logger, logging.WARNING) 61 | 62 | 63 | if __name__ == "__main__": 64 | init_logger("/tmp/launcher.log") 65 | 66 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/cfw_logo_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/cfw_logo_1024.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/cfw_logo_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/cfw_logo_512.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_app.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_cfw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_cfw.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_folder.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_folder_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_folder_up.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_move_into_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_move_into_folder.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_move_into_new_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_move_into_new_folder.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_remove_from_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_remove_from_folder.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_remove_from_folder_and_delete_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/media/icon_remove_from_folder_and_delete_folder.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/bluetooth.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from PyQt5.QtCore import QCoreApplication 5 | 6 | import fcntl, socket 7 | 8 | def name(): 9 | return QCoreApplication.translate("PluginBluetooth", "Bluetooth") 10 | 11 | def hci0_up(): 12 | # AF_BLUETOOTH = 31, BTPROTO_HCI = 1 13 | try: 14 | s = socket.socket(31, socket.SOCK_RAW, 1) 15 | di = bytearray(92) # hci0 16 | fcntl.ioctl(s.fileno(), 0x800448d3, di) 17 | return (di[16] & 1) != 0 18 | except: 19 | return None 20 | 21 | def icon(): 22 | icon_data = [ "16 16 2 1 ", " c None", ". c white", 23 | " ", 24 | " . ", 25 | " .. ", 26 | " . . ", 27 | " . . . ", 28 | " . . . ", 29 | " ... ", 30 | " . ", 31 | " ... ", 32 | " . . . ", 33 | " . . . ", 34 | " . . ", 35 | " .. ", 36 | " . ", 37 | " ", 38 | " " ] 39 | 40 | state = hci0_up() 41 | if state == True: 42 | # device up: draw white 43 | icon_data[2] = ". c white" 44 | return icon_data 45 | 46 | elif state == False: 47 | # device present but no link: draw darkgrey 48 | icon_data[2] = ". c #606060" 49 | return icon_data 50 | 51 | else: 52 | return None 53 | 54 | def status(): 55 | state = hci0_up() 56 | if state == True: 57 | return QCoreApplication.translate("PluginBluetooth", "Enabled") 58 | elif state == False: 59 | return QCoreApplication.translate("PluginBluetooth", "Disabled") 60 | else: 61 | return QCoreApplication.translate("PluginBluetooth", "Not available") 62 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/bluetooth_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/plugins/bluetooth_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/bluetooth_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PluginBluetooth 5 | 6 | 7 | Bluetooth 8 | Bluetooth 9 | 10 | 11 | 12 | Enabled 13 | Eingeschaltet 14 | 15 | 16 | 17 | Disabled 18 | Ausgeschaltet 19 | 20 | 21 | 22 | Not available 23 | Nicht verfügbar 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/eth_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/plugins/eth_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/eth_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PluginEth 5 | 6 | 7 | Up, 8 | An, 9 | 10 | 11 | 12 | No link 13 | Kein Link 14 | 15 | 16 | 17 | Not available 18 | Nicht verfügbar 19 | 20 | 21 | 22 | Ethernet 23 | Ethernet 24 | 25 | 26 | 27 | Up, no IP address 28 | An, keine IP-Adresse 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/kbd.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # plugin checking for presence of physical keyboard 4 | 5 | import os 6 | 7 | from PyQt5.QtCore import QCoreApplication 8 | 9 | def name(): 10 | return QCoreApplication.translate("PluginKbd", "Keyboard") 11 | 12 | def keyboard_present(): 13 | try: 14 | for i in os.listdir("/dev/input/by-id"): 15 | if i[-4:] == "-kbd": 16 | return True 17 | except: 18 | pass 19 | 20 | return False 21 | 22 | def icon(): 23 | # create icon from png: convert x.png -monochrome x.xpm 24 | icon_data = [ "16 16 2 1 ", " c None", ". c white", 25 | " ", 26 | " ", 27 | " ", 28 | " ", 29 | " ", 30 | " . . . . . . .. ", 31 | " . ", 32 | " .. . . . . . . ", 33 | " ", 34 | " ... . . . . .. ", 35 | " ", 36 | " .. ...... .. ", 37 | " ", 38 | " ", 39 | " ", 40 | " " ] 41 | 42 | if keyboard_present(): 43 | return icon_data 44 | else: 45 | return None 46 | 47 | def status(): 48 | if keyboard_present(): 49 | return QCoreApplication.translate("PluginKbd","Available") 50 | else: 51 | return QCoreApplication.translate("PluginKbd","Not available") 52 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/kbd_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/plugins/kbd_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/kbd_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PluginKbd 5 | 6 | 7 | Available 8 | Verfügbar 9 | 10 | 11 | 12 | Not available 13 | Nicht verfügbar 14 | 15 | 16 | 17 | Keyboard 18 | Tastatur 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/rtc.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # plugin checking for RTC interrupts. Keep quiet if there were none 4 | 5 | from PyQt5.QtCore import QCoreApplication 6 | 7 | import os 8 | 9 | IRQ_SRC = "tps65910-rtc" 10 | 11 | def name(): 12 | return QCoreApplication.translate("PluginRtc", "RTC") 13 | 14 | # check for the number of rtc interrupts 15 | # the interesting line in /proc/interrupts looks like this 16 | # 197: 1 tps65910 6 Edge tps65910-rtc 17 | 18 | def rtc_interrupts(): 19 | try: 20 | for line in open("/proc/interrupts",'r'): 21 | parts = line.strip().split() 22 | if len(parts) >= 6 and parts[5] == IRQ_SRC: 23 | return int(parts[1]) 24 | except: 25 | pass 26 | 27 | return 0 28 | 29 | def icon(): 30 | # create icon from png: convert x.png -monochrome x.xpm 31 | icon_data = [ "16 16 2 1 ", " c None", "# c white", 32 | " ### ### ", 33 | " ##### ##### ", 34 | " ## #### ## ", 35 | " # ######## # ", 36 | " ### ### ", 37 | " ## ## ## ", 38 | " ## ## ## ", 39 | " ## ## ## ", 40 | " ## #### ## ", 41 | " ## #### ## ", 42 | " ## ## ", 43 | " ## ## ", 44 | " ## ## ", 45 | " ### ### ", 46 | " ######## ", 47 | " # #### # " ] 48 | 49 | if rtc_interrupts() > 0: 50 | return icon_data 51 | else: 52 | return None 53 | 54 | def status(): 55 | if rtc_interrupts() > 0: 56 | return str(rtc_interrupts())+" "+QCoreApplication.translate("PluginRtc", "events") 57 | else: 58 | return None 59 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/rtc_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/plugins/rtc_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/rtc_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PluginRtc 5 | 6 | 7 | events 8 | Ereignisse 9 | 10 | 11 | 12 | RTC 13 | Echtzeituhr 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/wlan_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/plugins/wlan_de.qm -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/plugins/wlan_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PluginWlan 5 | 6 | 7 | Up, 8 | An, 9 | 10 | 11 | 12 | Not available 13 | Nicht verfügbar 14 | 15 | 16 | 17 | WLAN 18 | WLAN 19 | 20 | 21 | 22 | Up, no IP address 23 | An, keine IP-Adresse 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/cancelicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/cancelicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkbox_checked.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkbox_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkbox_unchecked.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/checkicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/closeicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/closeicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/confirmicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/confirmicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/downicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/downicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/keyboard_return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/keyboard_return.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/keyboard_return.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 55 | 56 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/menuicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/menuicon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/osk_caps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/osk_caps.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/osk_erase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/osk_erase.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollarrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollarrow_left.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollarrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollarrow_right.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollbar_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/scrollbar_handle.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_down.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_down_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_down_disabled.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_up.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_up_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/opt/ftc/themes/default/spinbox_up_disabled.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/bin/get_size_json.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys 5 | import json 6 | try: 7 | data = json.load(sys.stdin) 8 | for asset in data["assets"]: 9 | if asset["content_type"] == "application/zip": 10 | print(asset["size"]) 11 | sys.exit(0) 12 | except: 13 | pass 14 | sys.exit(1) 15 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/bin/launcher-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /bin/echo "msg $*" | /usr/bin/nc -c localhost 9000 3 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/lib/firmware/ti-connectivity/wl18xx-conf.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/usr/lib/firmware/ti-connectivity/wl18xx-conf.bin -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/calibrate-touchscreen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | calibrate() { 4 | TSLIB_TSDEVICE=/dev/input/event0 /usr/bin/ts_calibrate 5 | touch /etc/.reset-touchscreen-calibration 6 | } 7 | 8 | unsetflag() { 9 | rm -f /etc/.reset-touchscreen-calibration 10 | } 11 | 12 | reset() { 13 | cp -f /media/sdcard/root/etc/pointercal /etc/pointercal 14 | unsetflag 15 | } 16 | 17 | case "$1" in 18 | calibrate) 19 | calibrate 20 | ;; 21 | commit) 22 | unsetflag 23 | ;; 24 | 25 | reset) 26 | reset 27 | ;; 28 | 29 | is-uncommitted) 30 | if [ -f /etc/.reset-touchscreen-calibration ]; then 31 | exit 0; 32 | else 33 | exit 1; 34 | fi 35 | ;; 36 | 37 | *) 38 | echo "Usage: $0 {calibrate|commit|reset}" 39 | exit 1 40 | esac 41 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/halt: -------------------------------------------------------------------------------- 1 | poweroff -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/pam_null_passwd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$PAM_USER" = "" ] ; then 3 | exit 10; 4 | fi 5 | /sbin/unix_chkpwd "$PAM_USER" nullok < /dev/zero 6 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/pam_touchscreen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export PATH=/bin:/usr/bin 3 | answer=$(eval echo "confirm $*" | nc localhost 9000) 4 | if [ "$answer" = "Ok" ] ; then 5 | exit 0 6 | fi 7 | exit 7 8 | 9 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/poweroff: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$(whoami)" != "root" ]; then 3 | echo "$0 must be run as root" >&2; 4 | exit 1 5 | fi 6 | /bin/launcher-msg "Shutting down..." 7 | sleep 2 8 | exec /bin/busybox poweroff 9 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/usr/sbin/reboot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ "$(whoami)" != "root" ]; then 3 | echo "$0 must be run as root" >&2; 4 | exit 1 5 | fi 6 | /bin/launcher-msg "Rebooting..." 7 | sleep 2 8 | case $(cat /rom/etc/sysversion) in 9 | [0123].*|4.[0123].*|4.4.[012]*) 10 | # normal reboot hangs on firmware versions < 4.4.3 11 | # workaround: set a short rtc wakeup timer and power off instead 12 | echo +15 > /sys/class/rtc/rtc1/wakealarm 13 | exec /bin/busybox poweroff 14 | ;; 15 | *) 16 | exec /bin/busybox reboot 17 | ;; 18 | esac 19 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/applog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fischertechnik TXT community firmware 5 | 6 | 7 | 8 |

fischertechnik TXT

9 | 10 |

Application log

11 |
12 | 50 | 51 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/applog.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import sys, string, os, time 6 | import asyncio 7 | import websockets 8 | import subprocess 9 | import socket 10 | 11 | FILE = "/tmp/app.log" 12 | 13 | def notify_launcher(str): 14 | # Create a socket (SOCK_STREAM means a TCP socket) 15 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 16 | try: 17 | # Connect to server and send data 18 | sock.connect(("localhost", 9000)) 19 | sock.sendall(bytes(str + "\n", "UTF-8")) 20 | except socket.error as msg: 21 | pass 22 | finally: 23 | sock.close() 24 | 25 | def htmlize(s): 26 | s = s.replace("&", "&") 27 | s = s.replace("<", "<") 28 | s = s.replace(">", ">") 29 | s = s.replace("\n", "
") 30 | return s 31 | 32 | @asyncio.coroutine 33 | def handler(websocket, path): 34 | with open(FILE, 'r') as fin: 35 | line = fin.readline() 36 | while(websocket.open): 37 | if line: 38 | yield from websocket.send(htmlize(line)) 39 | else: 40 | yield from asyncio.sleep(0.01) 41 | line = fin.readline() 42 | 43 | asyncio.get_event_loop().stop() 44 | 45 | if os.fork(): 46 | sys.exit(0) 47 | 48 | time.sleep(1) 49 | 50 | os.setsid() 51 | 52 | # request log file creation from launcher 53 | notify_launcher("logging-start") 54 | 55 | # this is the server process which reads the file, monitors 56 | # it for new contents and forwards it to the client 57 | loop = asyncio.get_event_loop() 58 | start_server = websockets.serve(handler, "", 8999) 59 | websocket_server = loop.run_until_complete(start_server) 60 | 61 | try: 62 | loop.run_forever() 63 | finally: 64 | websocket_server.close() 65 | loop.run_until_complete(websocket_server.wait_closed()) 66 | 67 | notify_launcher("logging-stop") 68 | 69 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/apps: -------------------------------------------------------------------------------- 1 | ../../opt/ftc/apps -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/brick.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/var/www/brick.gif -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/default_screenshot.png: -------------------------------------------------------------------------------- 1 | ../../etc/ftc-logo.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/delete.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import configparser 6 | import getpass 7 | import cgi 8 | import zipfile 9 | import sys, os 10 | import socket 11 | import shutil 12 | 13 | print("Content-Type: text/html") 14 | print("") 15 | print('') 16 | print('') 17 | print('') 18 | print('fischertechnik TXT community firmware') 19 | print('') 20 | print('') 21 | print('') 22 | print('

fischertechnik TXT

') 23 | 24 | print('
') 25 | 26 | appbase = "/opt/ftc/apps" 27 | arguments = cgi.FieldStorage() 28 | name = arguments['app'].value 29 | 30 | # make sure there's a manifest file 31 | manifestfile = appbase + "/" + name + "/manifest" 32 | if os.path.isfile(manifestfile): 33 | manifest = configparser.RawConfigParser() 34 | manifest.read_file(open(manifestfile, "r", encoding="utf8")) 35 | appname = manifest.get('app', 'name') 36 | 37 | print('

Deleting "' + appname + '" app ...

') 38 | 39 | deldir = appbase + "/" + name 40 | print('Removing ' + deldir + ' and all files below
') 41 | shutil.rmtree(deldir) 42 | 43 | # finally send gui a request to refresh its icons 44 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 45 | try: 46 | print("Requesting rescan ...
") 47 | # Connect to server and send data 48 | sock.connect(("localhost", 9000)) 49 | sock.sendall(bytes("rescan\n", "UTF-8")) 50 | except socket.error as msg: 51 | print("

Unable to connect to Launcher: ", msg, "

") 52 | 53 | else: 54 | print('

Error: Application not found

') 55 | 56 | 57 | print('

') 58 | print('Home') 59 | print('

') 60 | print("") 61 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/board/fischertechnik/TXT/rootfs/var/www/icon.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/index.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | from applist import print_apptable 5 | 6 | print(""" 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | fischertechnik TXT community firmware 17 | 18 | 19 | 20 | 21 | 22 |

fischertechnik TXT

23 |
community edition
24 | 25 |
26 |
27 | 28 |

Installed apps

""") 29 | 30 | print_apptable() 31 | 32 | print(""" 33 |
34 |

App upload

35 |
36 |

Choose a zip file containing a TXT app to upload:

37 | 38 | 39 |
40 | 41 |
42 | 43 | 44 | """) 45 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/launch.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import cgi 6 | import sys, os 7 | import socket 8 | 9 | referrer = os.environ.get("HTTP_REFERER") 10 | 11 | print("Content-Type: text/html") 12 | print("") 13 | print('') 14 | print('') 15 | print('') 16 | print('') 17 | print('fischertechnik TXT community firmware') 18 | print('') 19 | print('') 20 | print('') 21 | print('

fischertechnik TXT

') 22 | 23 | arguments = cgi.FieldStorage() 24 | appname = arguments['app'].value 25 | executable = arguments['exec'].value 26 | print("

Launching " + appname + " ...

") 27 | 28 | print('
') 29 | 30 | # Create a socket (SOCK_STREAM means a TCP socket) 31 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 32 | try: 33 | # Connect to server and send data 34 | sock.connect(("localhost", 9000)) 35 | sock.sendall(bytes("launch " + executable + "\n", "UTF-8")) 36 | except socket.error as msg: 37 | print("

Unable to connect to Launcher!

") 38 | print("

" , msg, "

") 39 | finally: 40 | sock.close() 41 | 42 | print("") 43 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/screenshot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | fischertechnik TXT community firmware 11 | 12 | 13 | 41 | 42 | 43 | 44 |

fischertechnik TXT

45 |
community edition
46 | 47 |
48 |

49 | 50 | 51 |

52 | 53 |

54 | 55 | 56 | 57 |

58 | 59 | Home 60 | 61 |

62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/screenshot.png: -------------------------------------------------------------------------------- 1 | /tmp/screenshot.png -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/screenshot.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import sys, os, subprocess, platform 6 | 7 | print("Content-Type: text/html") 8 | print("") 9 | print('') 10 | print('') 12 | print('') 13 | print(' ') 14 | print(' Screenshot taken') 15 | print(' ') 16 | print(' ') 17 | print('

Screenshot taken

') 18 | 19 | # for PC based tests use imagemagicks import to grab the X screen. The user 20 | # ownign the screen needs to give access with "xhost +" beforehand 21 | if platform.machine() == "armv7l": 22 | COMMAND = "fbgrab /tmp/screenshot.png" 23 | else: 24 | COMMAND = "import -display :0 -window root -geometry 320x240 /tmp/screenshot.png" 25 | 26 | app = subprocess.Popen(COMMAND.split()) 27 | while app.poll() == None: 28 | pass 29 | 30 | print(' ') 31 | print('') 32 | 33 | 34 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/stop.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import cgi 6 | import sys, os 7 | import socket 8 | 9 | referrer = os.environ.get("HTTP_REFERER") 10 | 11 | print("Content-Type: text/html") 12 | print("") 13 | print('') 14 | print('') 15 | print('') 16 | print('') 17 | print('fischertechnik TXT community firmware') 18 | print('') 19 | print('') 20 | print('') 21 | print('

fischertechnik TXT

') 22 | 23 | arguments = cgi.FieldStorage() 24 | appname = arguments['app'].value 25 | print("

Stopping " + appname + " ...

") 26 | 27 | print('
') 28 | 29 | # Create a socket (SOCK_STREAM means a TCP socket) 30 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 31 | try: 32 | # Connect to server and send data 33 | sock.connect(("localhost", 9000)) 34 | sock.sendall(bytes("stop-app\n", "UTF-8")) 35 | except socket.error as msg: 36 | print("

Unable to connect to Launcher!

") 37 | print("

" , msg, "

") 38 | 39 | finally: 40 | sock.close() 41 | 42 | print("") 43 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/rootfs/var/www/txt.css: -------------------------------------------------------------------------------- 1 | body, html { 2 | padding: 3px 3px 3px 3px; 3 | font-family: sans-serif; 4 | font-size: 14pt; 5 | color: white; 6 | 7 | background: #448acc; 8 | background: -moz-linear-gradient(top, #448acc 0%, #5c96cc 20%, #0c6acc 100%); 9 | background: -webkit-linear-gradient(top, #448acc 0%,#5c96cc 20%,#0c6acc 100%); 10 | background: linear-gradient(to bottom, #448acc 0%,#5c96cc 20%,#0c6acc 100%); 11 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#448acc', endColorstr='#0c6acc',GradientType=0 ); 12 | margin: 0; 13 | background-repeat: no-repeat; 14 | background-attachment:fixed; 15 | } 16 | 17 | body { 18 | height: 100%; 19 | } 20 | 21 | h1, h2 { 22 | text-align: center; 23 | } 24 | 25 | .outline { 26 | color: black; 27 | font-weight: bold; 28 | text-shadow: 29 | 2px 0px 0 white, 30 | -2px 0px 0 white, 31 | 0px 2px 0 white, 32 | 0px -2px 0 white, 33 | -2px -2px 0 white, 34 | 2px -2px 0 white, 35 | -2px 2px 0 white, 36 | 2px 2px 0 white, 37 | 5px 5px 10px black; 38 | } 39 | 40 | a { 41 | color: white; 42 | } 43 | 44 | -------------------------------------------------------------------------------- /board/fischertechnik/TXT/user.tab: -------------------------------------------------------------------------------- 1 | - -1 i2c 84 - - - - 2 | ROBOPro 1004 ROBOPro 1008 !=ROBOPro /opt/fischertechnik /bin/sh users,tty,video,audio,i2c 3 | ftc 1001 ftc 1001 - /home/ftc /bin/sh users,tty,video,audio,i2c,sudo,gpio,dialout 4 | -------------------------------------------------------------------------------- /configs/fischertechnik_TXT_initramfs_defconfig: -------------------------------------------------------------------------------- 1 | BR2_arm=y 2 | BR2_cortex_a8=y 3 | BR2_ARM_FPU_NEON=y 4 | BR2_ARM_INSTRUCTIONS_THUMB2=y 5 | BR2_TOOLCHAIN_EXTERNAL=y 6 | BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y 7 | BR2_TARGET_OPTIMIZATION="-pipe" 8 | BR2_CCACHE=y 9 | BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH)/patches" 10 | BR2_TARGET_GENERIC_HOSTNAME="FT-txt" 11 | BR2_TARGET_GENERIC_ISSUE="Welcome to FT-txt" 12 | BR2_INIT_NONE=y 13 | BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y 14 | BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt $(BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH)/board/fischertechnik/TXT/device_table_initramfs.txt" 15 | BR2_ROOTFS_MERGED_USR=y 16 | # BR2_TARGET_ENABLE_ROOT_LOGIN is not set 17 | BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" 18 | BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y 19 | BR2_TARGET_GENERIC_GETTY_TERM="linux" 20 | BR2_ENABLE_LOCALE_WHITELIST="C en_US de de_AT de_DE de_CH fr es nl pt" 21 | BR2_GENERATE_LOCALE="en_US de_DE fr_FR nl_NL" 22 | BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH)/board/fischertechnik/TXT/user.tab" 23 | BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH)/board/fischertechnik/TXT/initramfs" 24 | BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y 25 | BR2_PACKAGE_DOSFSTOOLS=y 26 | BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y 27 | BR2_PACKAGE_E2FSPROGS=y 28 | BR2_PACKAGE_FBV=y 29 | BR2_PACKAGE_PSPLASH=y 30 | BR2_PACKAGE_LIBFUSE=y 31 | BR2_PACKAGE_LINUX_PAM=y 32 | # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set 33 | BR2_TARGET_ROOTFS_CPIO=y 34 | BR2_TARGET_ROOTFS_CPIO_XZ=y 35 | # BR2_TARGET_ROOTFS_TAR is not set 36 | BR2_PACKAGE_HOST_KMOD=y 37 | BR2_PACKAGE_HOST_UBOOT_TOOLS=y 38 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .sass-cache/ 3 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | --- 4 |

Ooops, Something Went Wrong

5 |

6 | Unfortunately the site you requested doesn’t exist! 7 |

8 |

9 | Back to Mainpage 10 |

11 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | url: https://cfw.ftcommunity.de 2 | repository: ftCommunity/ftcommunity-TXT 3 | gems: 4 | - jekyll-github-metadata 5 | - jekyll-optional-front-matter 6 | - jekyll-relative-links 7 | - jekyll-titles-from-headings 8 | 9 | kramdown: 10 | input: GFM 11 | auto_ids: true 12 | syntax_highlighter: rouge 13 | 14 | languages: [ "en", "de" ] 15 | 16 | defaults: 17 | - scope: 18 | path: "" 19 | values: 20 | layout: "default" 21 | - scope: 22 | path: "de/programming/brickly" 23 | values: 24 | edit-repository-url: "https://github.com/EstherMi/ft-brickly-userguide" 25 | edit-repository-path: "/de/brickly/" 26 | translate-repository-path: "/{{language}}/brickly/" 27 | - scope: 28 | path: "de/programming/brickly/index.md" 29 | values: 30 | nav-pos: 0 31 | -------------------------------------------------------------------------------- /docs/_data/label.yaml: -------------------------------------------------------------------------------- 1 | description: 2 | en: "The community firmware is a free and modern operating system for your fischertechnik TXT. Heavily extended internet connectivity including an own app store as well as the ability to control and program models via PC, tablet or smart phone make your TXT fit for the future." 3 | de: "Die Community-Firmware ist ein freies und modernes Betriebssystem für deinen fischertechnik TXT. Stark erweiterte Internet-Fähigkeiten inklusive eigenem App-Store sowie die Steuerung und Programmierung von Modellen über PC, Tablet oder Smartphone machen deinen TXT fit für die Zukunft." 4 | edit_page: 5 | en: "Edit this page on GitHub" 6 | de: "Seite auf GitHub bearbeiten" 7 | language: 8 | en: "English" 9 | de: "Deutsch" 10 | maintained_by: 11 | en: "Maintained by the fischertechnik community on GitHub" 12 | de: "Erstellt von der fischertechnik community auf GitHub" 13 | community: 14 | en: "Website of the fischertechnik community" 15 | de: "Website der fischertechnik community" 16 | home: 17 | de: "Startseite" 18 | en: "Home" 19 | translation-missing: 20 | message: 21 | de: "Diese Seite gibt es leider noch nicht auf Deutsch." 22 | en: "Sorry, this page has not yet been translated into English." 23 | translate: 24 | de: "Seite auf GitHub übersetzen" 25 | en: "Translate this page on GitHub" 26 | -------------------------------------------------------------------------------- /docs/_includes/de.svg: -------------------------------------------------------------------------------- 1 | 2 | Deutsch 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/_includes/en.svg: -------------------------------------------------------------------------------- 1 | 2 | English 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-1/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | Timestamp=2017,7,17,17,9,3 3 | Version=3 4 | ViewMode=1 5 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-1/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/_includes/examples/python/tutorial-1/icon.png -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-1/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Test 3 | category: Tests 4 | author: Joe Developer 5 | icon: icon.png 6 | desc: TXT app tutorial #1 7 | url: http://cfw.ftcommunity.de/ftcommunity-TXT/en/programming/python/tutorial-1.html 8 | exec: test.py 9 | managed: yes 10 | uuid: 191fe5a6-313b-4083-af65-d1ad7fd6d281 11 | version: 1.0 12 | firmware: 0.9 13 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-1/test.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import sys 5 | from TouchStyle import * 6 | 7 | class FtcGuiApplication(TouchApplication): 8 | def __init__(self, args): 9 | TouchApplication.__init__(self, args) 10 | 11 | # Creates an empty MainWindow 12 | w = TouchWindow("Test") 13 | w.show() 14 | self.exec_() 15 | 16 | if __name__ == "__main__": 17 | FtcGuiApplication(sys.argv) 18 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-1/test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/_includes/examples/python/tutorial-1/test.zip -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-3/app_tutorial3_1.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys 5 | import ftrobopy # Import the ftrobopy module 6 | from TouchStyle import * 7 | 8 | class FtcGuiApplication(TouchApplication): 9 | def __init__(self, args): 10 | TouchApplication.__init__(self, args) 11 | # create the empty main window 12 | w = TouchWindow("Tut_3_1") 13 | 14 | try: 15 | txt = ftrobopy.ftrobopy("localhost", 65000) # connect to TXT's IO controller 16 | except: 17 | txt = None # set TXT to "None" of connection failed 18 | 19 | if not txt: 20 | # display error if TXT could no be connected 21 | # error messages is centered and may span 22 | # over several lines 23 | err_msg = QLabel("Error connecting IO server") # create the error message label 24 | err_msg.setWordWrap(True) # allow it to wrap over several lines 25 | err_msg.setAlignment(Qt.AlignCenter) # center it horizontally 26 | w.setCentralWidget(err_msg) # attach it to the main output area 27 | 28 | w.show() 29 | self.exec_() 30 | 31 | if __name__ == "__main__": 32 | FtcGuiApplication(sys.argv) 33 | 34 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-3/app_tutorial3_2.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys 5 | import ftrobopy # Import the ftrobopy module 6 | from TouchStyle import * 7 | 8 | class FtcGuiApplication(TouchApplication): 9 | def __init__(self, args): 10 | TouchApplication.__init__(self, args) 11 | 12 | # create the empty main window 13 | w = TouchWindow("Tut_3_2") 14 | 15 | try: 16 | txt = ftrobopy.ftrobopy("localhost", 65000) # connect to TXT's IO controller 17 | except: 18 | txt = None # set TXT to "None" of connection failed 19 | 20 | if not txt: 21 | # display error of TXT could no be connected 22 | # error messages is centered and may span 23 | # over several lines 24 | err_msg = QLabel("Error connecting IO server") # create the error message label 25 | err_msg.setWordWrap(True) # allow it to wrap over several lines 26 | err_msg.setAlignment(Qt.AlignCenter) # center it horizontally 27 | w.setCentralWidget(err_msg) # attach it to the main output area 28 | else: 29 | # initialization went fine. So the main gui 30 | # is being drawn 31 | button = QPushButton("Toggle O1") # create a button labeled "Toggle O1" 32 | w.setCentralWidget(button) # attach it to the main output area 33 | 34 | # configure all TXT outputs to normal mode 35 | M = [ txt.C_OUTPUT, txt.C_OUTPUT, txt.C_OUTPUT, txt.C_OUTPUT ] 36 | I = [ (txt.C_SWITCH, txt.C_DIGITAL ), 37 | (txt.C_SWITCH, txt.C_DIGITAL ), 38 | (txt.C_SWITCH, txt.C_DIGITAL ), 39 | (txt.C_SWITCH, txt.C_DIGITAL ), 40 | (txt.C_SWITCH, txt.C_DIGITAL ), 41 | (txt.C_SWITCH, txt.C_DIGITAL ), 42 | (txt.C_SWITCH, txt.C_DIGITAL ), 43 | (txt.C_SWITCH, txt.C_DIGITAL ) ] 44 | txt.setConfig(M, I) 45 | txt.updateConfig() 46 | 47 | w.show() 48 | self.exec_() 49 | 50 | if __name__ == "__main__": 51 | FtcGuiApplication(sys.argv) 52 | -------------------------------------------------------------------------------- /docs/_includes/examples/python/tutorial-simple/hello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/_includes/examples/python/tutorial-simple/hello.png -------------------------------------------------------------------------------- /docs/_layouts/postprocess-kramdown.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Jekyll layout that postprocesses the kramdown output in the
element. 3 | # 4 | # This layout assumes that the page contains exactly one
and 5 | # that this
contains only HTML output from kramdown. 6 | # 7 | # Processing: 8 | # * convert

to
and add a 9 | #
if the image contains a "title" attribute 10 | layout: compress 11 | --- 12 | {% assign tmp = content | split: "
" %} 13 | {% assign prefix = tmp[0] %} 14 | {% assign tmp = tmp[1] | split: "
" %} 15 | {% assign content = tmp[0] %} 16 | {% assign suffix = tmp[1] %} 17 | {{ prefix }} 18 |
19 | {% assign chunks = content | split: "

" %}{{ chunks[0] }}{% assign chunks = chunks | shift %} 20 | {% for chunk in chunks %} 21 | {% assign start = chunk | strip | slice: 0, 5 %} 22 | {% if start == "" %} 24 | {% if img[1] == "

" %} 25 |
26 | {% if img[0] contains "title=" %} 27 | {% assign before_title = img[0] | split: "title=" %} 28 | {% assign title = before_title[1] | split: '"' %} 29 | {% assign after_title = title | shift | shift | join: '"' %} 30 | {% assign title = title[1] %} 31 | {{ before_title}} {{ after_title}}/> 32 |
{{ title }}
33 | {% else %} 34 | {{ img[0] }}/> 35 | {% endif %} 36 |
37 | {% else %} 38 |

{{ chunk }} 39 | {% endif %} 40 | {% else %} 41 |

{{ chunk }} 42 | {% endif %} 43 | {% endfor %} 44 |

{{ suffix }} 45 | -------------------------------------------------------------------------------- /docs/_sass/markdown.scss: -------------------------------------------------------------------------------- 1 | // (S)CSS rules for the rendered markdown content 2 | 3 | @import "syntax-highlighting-github"; 4 | .highlight { 5 | padding: 1.5em; 6 | background: #eee; 7 | overflow: auto; 8 | } 9 | 10 | h1 { 11 | color: #000; 12 | font-size: larger; 13 | font-weight: bold; 14 | border-bottom: 1px solid #000; 15 | padding-top: 15px; 16 | padding-bottom: 5px; 17 | margin: 0; 18 | clear: both; 19 | } 20 | 21 | h2 { 22 | color: #000; 23 | font-size: large; 24 | font-weight: bold; 25 | margin: 0; 26 | } 27 | 28 | h3, h4, h5, h6 { 29 | color: #000; 30 | font-weight: bold; 31 | margin: 0; 32 | } 33 | 34 | img { 35 | display: block; 36 | max-width: 40%; 37 | float: right; 38 | clear: right; 39 | margin-left: 1em; 40 | margin-right: 0; 41 | &.left { 42 | float: left; 43 | clear: left; 44 | margin-right: 1em; 45 | margin-left: 0; 46 | } 47 | &.right {} 48 | } 49 | 50 | figure { 51 | display: block; 52 | clear: both; 53 | max-width: 100%; 54 | img { 55 | float: none; 56 | max-width: 100%; 57 | margin-left: auto; 58 | margin-right: auto; 59 | } 60 | figcaption { 61 | display: block; 62 | text-align: center; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /docs/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/de/advanced/building/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Erzeugen 3 | nav-pos: 1 4 | --- 5 | 6 | # Erzeugen 7 | Dieses Kapitel erklärt, **wie** man die Community-Firmware baut und **warum** man das braucht. -------------------------------------------------------------------------------- /docs/de/advanced/building/prerequisites.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Voraussetzungen 3 | nav-pos: 1 4 | --- 5 | 6 | # Voraussetzungen 7 | 8 | Du brauchst ein paar Dinge, um die Community-Firmware erstellen zu können. 9 | 10 | ## Benötigt wird: 11 | 1. Ein Linux-System mit mindestens 20GB freiem Speicherplatz (*sowie eine schnelle CPU und eine schnelle Internetverbindung*) 12 | 13 | (***Die folgende Anleitung basiert auf Ubuntu, sollte jedoch auch auf anderen Distributionen funktionieren***). 14 | 15 | 2. Eine microSD-Karte, auf der die ftcommunity-TXT-Firmware installiert werden kann. Jede SD(HC) microSD-Karte sollte funktionieren! 16 | 17 | (*Karten mit anderen technischen Spezifikationen (z.B. microSD-XC) wurden nicht getestet*). 18 | Um sicher zu sein, wird empfohlen, eine microSD(HC)-Karte mit 32GB oder weniger zu verwenden. 19 | 20 | Da die ftcommunity-TXT-Firmware selbst nur 200MB Speicherplatz verbraucht, ist sogar eine 2GB-Karte mehr als ausreichend. 21 | 22 | 3. Ein ssh-Client, um sich mit dem TXT zu verbinden: 23 | - auf Windows [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htm) 24 | - auf iOS kann z.B. “Serverauditor” benutzt werden 25 | 4. Eine Netzwerkverbindung zum TXT: 26 | * USB-basierte Netzwerkverbindung: IP 192.168.7.2 27 | * WLAN Verbindung: IP 192.168.8.2 28 | * WLAN muss möglicherweise zuerst eingeschaltet werden: “Settings” -> “Network” -> WLAN Setup 29 | * In diesem Modus dient der TXT als Access-Point 30 | * Die Netzwerk-SSID ist der Name des TXT, welcher auf dem Hauptbildschirm angezeigt wird 31 | * Der WPA-Key befindet sich im Menü unter “Settings” -> “Network” -> WLAN Setup 32 | * BT-basierte Netzwerkverbindung IP 192.168.9.2 33 | * BT muss zuerst eingeschaltet werden: “Settings” -> “Network” 34 | -------------------------------------------------------------------------------- /docs/de/advanced/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: System-Entwicklung 3 | nav-pos: 4 4 | --- 5 | # System-Entwicklung 6 | Dieser Abschnitt beschreibt, wie man die Community-Firmware **selbst** erzeugt und wie die Passwort-/Anmelderegeln funktionieren. 7 | 8 | Nur **erfahrene Programmierer** sollten hiervon Gebrauch machen! 9 | -------------------------------------------------------------------------------- /docs/de/advanced/password-policy.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Passwort-/Anmelderegeln 3 | nav-pos: 2 4 | --- 5 | # Benutzer, Passwörter und "Root"-Zugriff auf dem TXT 6 | 7 | ## Auslieferungszustand der Benutzer 8 | Standardmässig kommt die Community-Firmware mit zwei Benutzern: **ftc** und **root** (*und ROBOPro, aber nur für Kompabilitätszwecke*). 9 | 10 | - Benutzer ftc hat **kein Passwort** 11 | - Benutzer root ist **deaktiviert** 12 | 13 | ## Per SSH als Benutzer ftc auf dem TXT einloggen 14 | 15 | Dafür musst du von einem SSH-Clienten eine Verbindung zum TXT mit dem **"ftc"-Benutzer** herstellen: 16 | 17 | ```ssh ftc@192.168.7.2``` 18 | 19 | (*Erklärung: Befehl Benutzer@IP-Adresse*) 20 | 21 | **Kein** Passwort wird benötigt! Du musst nur auf dem **Bildschirm bestätigen**, dass es sich um **deine Anfrage** handelt! 22 | 23 | 24 | ## Die "Zwei-Wege" Authentifizierung 25 | Die Community-Firmware (*ab Version 0.9.3*) zeigt einen Dialog auf dem TXT-Display, um zu bestätigen, dass der Netzwerkzugriff von dem aktiven Nutzer stammt. Standardmäßig braucht Du also Zugang zum Bildschirm, um per SSH auf den TXT zugreifen zu können. 26 | 27 | Um das zu vermeiden, musst Du ein Passwort setzen. Hierzu loggst Du Dich auf dem TXT per ssh ein und tippst: 28 | 29 | ```passwd``` 30 | 31 | 32 | 33 | ## Den "root"-Benutzer aktivieren 34 | 35 | Nach dem Du Dich per ssh als Benutzer "ftc" eingeloggt hast, kannst du jetzt den "root"-Benutzer aktivieren und mit einem Passwort versehen. 36 | - Das geht mit: `sudo passwd root` 37 | - Dort musst du **2x** dein Passwort eingeben, um sicher zu gehen, dass du dich **nicht verschrieben** hast! 38 | 39 | Jetzt kann der User root mit seinem Passwort per SSH auf den TXT zugreifen ohne Bestätigung auf dem TXT-Display. 40 | -------------------------------------------------------------------------------- /docs/de/advanced/serial-console.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Serielle Konsole 3 | nav-pos: 3 4 | --- 5 | 6 | Die serielle Konsole des TXT kann mit einem USB-auf-TTL-Adapter angezeigt werden. 7 | Im Prinzip sollte jeder gängige Adapter funktionieren, wichtig ist nur, dass der 8 | Adapter mit einem Pegel von 3.3V arbeitet. 9 | 10 | **Achtung:** vor der ersten Benutzung des Adapters unbedingt prüfen, dass zwischen GND <-> RX und 11 | GND <-> TX tatsächlich nur 3.3V anliegen. Ein Adapter mit 5V kann den TXT irreparabel beschädigen! 12 | 13 | Die EXT-Schnittstelle des Controllers ist wie folgt belegt: 14 | 15 | ``` 16 | RX 17 | | reserved 18 | | | I2C-Data 19 | | | | Extension 20 | | | | | GND 21 | | | | | | 22 | | +–––+ | 23 | +–––+ +–––+ 24 | | O O O O O | 25 | | O O O O O | 26 | +–––––––––––+ 27 | | | | | | 28 | | | | | Extension 29 | | | | Extension 30 | | | I2C-Clock 31 | | reserved 32 | TX 33 | ``` 34 | 35 | Beim Anschließen darauf achten, dass RX und TX gekreuzt verbunden werden: 36 | 37 | * TX <-> RX 38 | * RX <-> TX 39 | * GND <-> GND 40 | 41 | Die Konsole kann dann mit einem beliebigen Terminalprogramm geöffnet werden, z.B.: 42 | 43 | `screen /dev/tty.SLAB_USBtoUART 115200` 44 | 45 | Nach Einschalten des TXT sieht man die Meldungen des Bootloaders: 46 | 47 | ``` 48 | U-Boot SPL 2013.10 (Jul 04 2015 - 08:30:17) 49 | >>> I2C0 On 50 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 51 | Could not get board ID. 52 | >>> setup_dplls vor do_setup_dpll 53 | >>> setup_dplls nach do_setup_dpll 54 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 55 | Could not get board ID. 56 | >>> Setting MUX Start 57 | >>> Setting MUX End 58 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 59 | Could not get board ID. 60 | >>>Start TXT-Mode - V2 61 | LCD-Init_4: 62 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 63 | Could not get board ID. 64 | ---> MPU 600 VDD 46 65 | 66 | U-Boot 2013.10 (Jul 04 2015 - 08:30:17) 67 | 68 | I2C: ready 69 | DRAM: 256 MiB 70 | NAND: 128 MiB 71 | MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 72 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 73 | Could not get board ID. 74 | Net: usb_ether 75 | 76 | NAND read: device 0 offset 0x700000, size 0x40000 77 | 262144 bytes read: OK 78 | CopyToLcd 79 | LCD Command called 80 | Hit ENTER key to stop autoboot: 0 81 | ``` 82 | -------------------------------------------------------------------------------- /docs/de/getting-started/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Einstieg 3 | nav-pos: 1 4 | --- 5 | # Einstieg 6 | 7 | Die Community-Firmware (CFW) startet von einer MicroSD-Karte. 8 | 9 | Zuerst musst du die Firmware auf der SD-Karte einrichten (s. [Installations-Anleitung](installation.md)). 10 | 11 | Dann kannst du die Community-Firmware auf dem Touchscreen deines TXT oder über das Webinterface nutzen (s. [Anwendung](usage.md)). 12 | 13 | Du kannst mit der CFW einen TXT auf verschiedene Arten programmieren. Wie das geht, wird unter [Programmierung](../programming/index.md) erklärt. 14 | 15 | Wenn du die MicroSD-Karte wieder aus dem TXT entfernst, läuft nach dem nächsten Start wieder die eingebaute Original-Firmware. 16 | 17 | -------------------------------------------------------------------------------- /docs/de/index.md: -------------------------------------------------------------------------------- 1 | # Was ist das? 2 | 3 | ![fischertechnik TXT](../media/booting-CFW.png){:.right} 4 | Die **Community-Firmware** ist ein freies und modernes Betriebssystem für deinen [**fischertechnik TXT**](https://www.fischertechnik.de/de-de/produkte/spielen/robotics/522429-robotics-txt-controller). Stark erweiterte Internet-Fähigkeiten inklusive eigenem App-Store sowie die Steuerung und Programmierung von Modellen über PC, Tablet oder Smartphone machen deinen TXT fit für die Zukunft. 5 | 6 | **Und das Beste**: Du musst Deinen TXT dafür **nicht öffnen oder verändern**, denn die **Community-Firmware** wird auf SD-Karte installiert und kann so jederzeit wieder entfernt werden. 7 | 8 | # So einfach geht es! 9 | 10 | Du brauchst: 11 | * deinen [**fischertechnik TXT**](https://www.fischertechnik.de/de-de/produkte/spielen/robotics/522429-robotics-txt-controller) 12 | * eine MicroSD-Karte mit 2 bis 32GB Kapazität 13 | 14 | Die Installation erfolgt in vier einfachen Schritten: 15 | 16 | 1. Stelle sicher, dass du mindestens RoboPro Version 4.2.4 verwendest. Wir empfehlen die aktuelle Version 4.4.4. 17 | 1. Stelle deinen TXT so ein, dass er von einer SD-Karte booten kann. 18 | 1. Entpacke die drei im [Community-Firmware-ZIP-Archiv](https://github.com/ftCommunity/ftcommunity-TXT/releases/latest) enthaltenen Dateien auf deine MicroSD-Karte. 19 | 1. Stecke die MicroSD-Karte in deinen TXT und schalte ihn ein! 20 | 21 | Jetzt kannst du verschiedene Apps nutzen und mit [Brickly](programming/brickly), [Python](programming/python) und [ROBOPro](programming/robopro.md) deinen TXT programmieren. 22 | Detaillierte Erklärungen zur Installation findest du in der [Installations Anleitung](getting-started/installation.html), und weitere Informationen zur CFW findest du im [fischertechnik Community Forum](https://forum.ftcommunity.de/viewforum.php?f=33). 23 | -------------------------------------------------------------------------------- /docs/de/programming/brickly: -------------------------------------------------------------------------------- 1 | ../../_brickly/de/brickly -------------------------------------------------------------------------------- /docs/de/programming/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Programmierung 3 | nav-pos: 2 4 | --- 5 | 6 | # Programmierung 7 | 8 | Mit der Community-Firmware kannst du deine Fischertechnik-Modelle je nach deinen Kenntnissen und Vorlieben auf verschiedene Arten programmieren. 9 | 10 | * Als Anfänger arbeitest du am einfachsten mit der graphischen Programmierumgebung [Brickly](brickly). 11 | 12 | * Direkt auf dem TXT kannst du einfachere Modelle ziemlich schnell mit [startIDE](startide) programmieren. 13 | 14 | * Du kannst auch in der Programmiersprache [Python](python) Programme schreiben, die über das Modul ftrobopy die Ein- und Ausgänge deines TXT ansteuern. 15 | 16 | * Mit der “FT-GUI”-App kannst du aus der Community-Firmware die originale Benutzeroberfläche von Fischertechnik starten und den Controller mit dem [Programm ROBOPro](robopro.md) verwenden. 17 | -------------------------------------------------------------------------------- /docs/de/programming/python/examples: -------------------------------------------------------------------------------- 1 | ../../../media/examples/python -------------------------------------------------------------------------------- /docs/de/programming/python/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Python 3 | nav-pos: 2 4 | --- 5 | Python ist eine ausgewachsene Programmiersprache, die dir erlaubt, alle Fähigkeiten des TXT auszureizen. 6 | In [diesem Tutorial](tutorial-1.md) wird erklärt, wie du mit Python eine Anwendung mit eigener grafischer Oberfläche auf dem TXT programmieren kannst. 7 | Zur Ansteuerung des TXT-Controllers dient das [Modul ftrobopy](https://github.com/ftrobopy/ftrobopy). Dieses ist in der CFW enthalten. 8 | 9 | **Achtung:** In der CFW-GUI musst du die "FT-GUI"-App starten, um mit ftrobopy vom PC auf den TXT zugreifen zu können. Sonst kann der TXT keine Verbindung von außen entgegen nehmen. 10 | -------------------------------------------------------------------------------- /docs/de/programming/robopro.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: ROBOPro 3 | nav-pos: 3 4 | --- 5 | # ROBOPro mit der Community-Firmware verwenden 6 | 7 | ROBOPro-Programme kannst du mit der Community-Firmware verwenden, indem du auf dem TXT mit der "FT-GUI"-App die originale Benutzeroberfläche von Fischertechnik startest. 8 | Ein kurzer Druck auf den "**ON/OFF**"-Schalter (_eine Sekunde oder kürzer_) bringt 9 | dich zurück zum Hauptbildschirm der Community-Firmware. 10 | 11 | **Achtung:** Auch wenn die originale Benutzeroberfläche läuft, bleiben die 12 | Netzwerkeinstellungen so wie in der Community-Firmware. Um ROBOPro mit dem TXT 13 | zu verbinden, wählst du in ROBOPro für die IP-Addresse "Andere/manuell" aus und 14 | gibst die IP-Addresse des TXT im Textfeld an. 15 | 16 | **Achtung:** In der CFW-GUI musst du die "FT-GUI"-App starten, um mit ROBOPro vom PC auf den TXT zugreifen zu können. Sonst kann der TXT keine Verbindung von außen entgegen nehmen. 17 | 18 | **Achtung:** Nach einem Update von RoboPro und/oder der Original-Firmware laufen RoboPRO-Binaries, die mit der CFW geladen wurden und sich daher auf der SD-Karte befinden, nicht mehr und müssen manuell ersetzt werden. 19 | -------------------------------------------------------------------------------- /docs/de/programming/startide.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: startIDE 3 | nav-pos: 3 4 | --- 5 | # startIDE 6 | 7 | Mit startIDE kannst du deine Modelle direkt auf dem TXT-Display programmieren. 8 | startIDE ist im App-Store der community firmware erhältlich. 9 | 10 | Ein sehr ausführliches Handbuch findest du [hier](https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/Manual_170_de.pdf), weitere Infos [hier](https://github.com/PeterDHabermehl/startIDE) auf GitHub und [hier](https://forum.ftcommunity.de/viewtopic.php?f=33&t=4588) im Forum der ftcommunity. 11 | 12 | 13 | ![startIDE](https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/screenshots/startIDE01.png) 14 | ![Roboter](https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/screenshots/Haendetrockner.png) 15 | -------------------------------------------------------------------------------- /docs/en/advanced/building/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Building 3 | nav-pos: 1 4 | --- 5 | 6 | # Building 7 | This chapter explains how to do so **and** why! 8 | -------------------------------------------------------------------------------- /docs/en/advanced/building/prerequisites.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Prerequisites 3 | nav-pos: 1 4 | --- 5 | 6 | # Prerequisites 7 | 8 | You need a few things to be able to build the Community-Firmware 9 | 10 | ## Needed: 11 | 1. A Linux-System with at least 20 GB free hard disk space (*as well as a fast CPU and a fast internet connection*) 12 | 13 | (***The following how-to is based on Ubuntu, but should work on other distributions as well***). 14 | 15 | 2. A microSD-card on which the ftcommunity-TXT-firmware can be installed. Any SD(HC) microSD-Card should work! 16 | 17 | (*Cards with other technical specifications (eg. microSD-XC) have not been tested*). 18 | To be safe it is recommended to use a microSD(HC)-Card with 32GB or less. 19 | 20 | As the ftcommunity-TXT-firmware itself only uses as little as 200MB of cardspace, even a 2GB-card is more than sufficient. 21 | 22 | 3. A ssh-client to connect to the TXT: 23 | - on Windows [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htm) 24 | - on iOS eg. “Serverauditor” could be used 25 | 4. A network connection to the TXT: 26 | * USB-based network connection: IP 192.168.7.2 27 | * WLAN connection: IP 192.168.8.2 28 | * WLAN might need to be switched on first: “Settings” -> “Network” -> WLAN Setup 29 | * in this mode, the TXT serves as an access point 30 | * the network SSID is the name of the TXT displayed on the main screen 31 | * the WPA-Key can be found in the menu “Settings” -> “Network” -> WLAN Setup 32 | * BT-based network connection IP 192.168.9.2 33 | * BT needs to be switched on first: “Settings” -> “Network” 34 | -------------------------------------------------------------------------------- /docs/en/advanced/building/updating.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Updating 3 | nav-pos: 4 4 | --- 5 | # Fetch latest changes and make a new build 6 | To fetch changes from the main git repository of ftcommunity-TXT, you have to update your local copy of the repository and then rebuilt the firmware package. (This will be a lot quicker than the initial build, as only the changes will be downloaded and only changed parts will be recompiled). 7 | ## Updating the local clone of the git-repository 8 | Change to the directory with the local copy of the repository, then download and integrate the changes: 9 | `cd ~/ftcommunity-TXT` (or wherever else it might be located; this is the path if you followed this description from start.) 10 | `git pull` 11 | 12 | ## Re-building the ftcommunity-TXT-firmware 13 | `make fischertechnik_TXT_defconfig ` 14 | `make ` 15 | 16 | *Note: If the system doesn't work try running 17 | `make clean` 18 | before continuing with 19 | `make fischertechnik_TXT_defconfig` 20 | `make ` 21 | 22 | Be aware that in this case the entire system will be rebuilt - which takes a while (for orientaion: ~4hrs on my 2nd generation Intel Core i5 mobile with 2.5 GHz using Ubuntu in a VirtualBox environment) 23 | 24 | # Transfering the build output to the SD-Card 25 | 26 | 27 | ## Copy files from your computer 28 | Remove the SD-Card from the TXT, place it in a SD card reader in your computer and replace the following three files with the latest version: 29 | - uImage 30 | - am335x-kno_txt.dtb 31 | - rootfs.img 32 | 33 | ## Update without removing the SD-Card 34 | ... without removing the card from the TXT by replacing the system while it's running! (yup, that's possible in this case...) 35 | 36 | Important: Start up the TXT-community-firmware. 37 | 38 | For this update path you need to set a root password first. See [TXT password policy](../password-policy#enabeling-the-root-user) how to do that. 39 | 40 | From a linux system (or with any other SSH-client), on the console with the working directory being the ftcommunity-TXT-repository (in the examples used here: ~/ftcommunity-TXT) and provided 192.168.7.2 is the IP of your TXT: 41 | 42 | `ssh root@192.168.7.2 mv /media/sdcard/root.img /media/sdcard/root.old` 43 | `scp output/images/uImage output/images/am335x-kno_txt.dtb output/images/rootfs.img root@192.168.7.2:/media/sdcard/boot` 44 | 45 | Now, reboot the TXT. Be sure to shut it down by pressing the blue power button until "Shutting down..." is shown in the display. Release the button when you see the text, otherwise it will be turned off the hard way a few seconds later. 46 | 47 | -------------------------------------------------------------------------------- /docs/en/advanced/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: System Development 3 | nav-pos: 4 4 | --- 5 | # System Development 6 | This part describes how to build the community firmware and how the password policy of the TXT is working! 7 | 8 | Only people with **advanced programming abilites** should make use of them! 9 | -------------------------------------------------------------------------------- /docs/en/advanced/password-policy.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Password Policy 3 | nav-pos: 1 4 | --- 5 | 6 | # Users, passwords and root access on the TXT 7 | 8 | 9 | ## Out-of-box status of user accounts 10 | By default, the ftcommunity-TXT comes with two relevant users with the user names '**ftc**' and '**root**'. (*A third user - 'ROBOPro' is only included for compatibility reasons.*) 11 | 12 | - user 'ftc' has **no password** 13 | - user 'root'is **disabled** 14 | 15 | ## The "two factor" authentication 16 | The Community Firmware (*since version 0.9.3*) has a **"two-factor authentication"**. To connect to the TXT by any network you have to accept the connection on the display of your TXT. 17 | 18 | This means that you have to have access to your TXT's touchscreen to log on via SSH. 19 | 20 | To change this behavior, add a password for the root user (see below for instructions). 21 | 22 | ## Enabeling the root user 23 | To enable the user ´root´, you have to set a password for this user: 24 | 25 | 26 | Log on to the TXT from any Linux console (or using any SSH-client, eg. PuTTY on Windows) as user 'ftc': 27 | 28 | ```ssh ftc@192.168.7.2``` 29 | 30 | No password will be required. However, you'll have to klick "OK" in the confirmation dialog shown on the TXT screen (see above). 31 | 32 | Within the SSH-Session, i.e. on the TXT: 33 | 34 | Simply type: ```sudo passwd root ``` 35 | 36 | You will again be prompted for a confirmatory click on the TXT-display to permit the "sudo"-command. 37 | When setting the password for root, you will have to retype the password. 38 | You can now build a SSH connection to your TXT as user root using this password. There will be no confirmation dialog on the TXT screen. 39 | -------------------------------------------------------------------------------- /docs/en/advanced/serial-console.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Serial Console 3 | nav-pos: 3 4 | --- 5 | 6 | You can display the serial console from the TXT controler with a USB to TTL adapter. In the following example, a USB to TTL adapter with the chip CP2102 was used. Alternatively you could use an adapter with FT232 chip or similar. It is important that the adapters work on a 3.3 volt basis. First, you should plug the adapter into the desktop PC and check whether there are only 3.3 V between GND <-> RX or GND <-> TX. With 5 volts, the txt controller would be damaged. 7 | 8 | The EXT interface from the controller is occupied as follows: 9 | 10 | ``` 11 | RX 12 | | reserved 13 | | | I2C-Data 14 | | | | Extension 15 | | | | | GND 16 | | | | | | 17 | | +–––+ | 18 | +–––+ +–––+ 19 | | O O O O O | 20 | | O O O O O | 21 | +–––––––––––+ 22 | | | | | | 23 | | | | | Extension 24 | | | | Extension 25 | | | I2C-Clock 26 | | reserved 27 | TX 28 | ``` 29 | 30 | When wiring, make sure that RX and TX are cross-connected: 31 | 32 | * TX <-> RX 33 | * RX <-> TX 34 | * GND <-> GND 35 | 36 | Then the console can be opened with the OSX as follows: 37 | 38 | `screen /dev/tty.SLAB_USBtoUART 115200` 39 | 40 | Access with [other operating systems](https://wiki.onion.io/Tutorials/Connecting-to-Omega-via-Serial-Terminal) is also possible. 41 | 42 | Finally, the TXT can be turned on and you can see the boot process. 43 | 44 | ``` 45 | U-Boot SPL 2013.10 (Jul 04 2015 - 08:30:17) 46 | >>> I2C0 On 47 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 48 | Could not get board ID. 49 | >>> setup_dplls vor do_setup_dpll 50 | >>> setup_dplls nach do_setup_dpll 51 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 52 | Could not get board ID. 53 | >>> Setting MUX Start 54 | >>> Setting MUX End 55 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 56 | Could not get board ID. 57 | >>>Start TXT-Mode - V2 58 | LCD-Init_4: 59 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 60 | Could not get board ID. 61 | ---> MPU 600 VDD 46 62 | 63 | U-Boot 2013.10 (Jul 04 2015 - 08:30:17) 64 | 65 | I2C: ready 66 | DRAM: 256 MiB 67 | NAND: 128 MiB 68 | MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 69 | Could not probe the EEPROM; something fundamentally wrong on the I2C bus. 70 | Could not get board ID. 71 | Net: usb_ether 72 | 73 | NAND read: device 0 offset 0x700000, size 0x40000 74 | 262144 bytes read: OK 75 | CopyToLcd 76 | LCD Command called 77 | Hit ENTER key to stop autoboot: 0 78 | ``` 79 | -------------------------------------------------------------------------------- /docs/en/getting-started/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Getting Started 3 | nav-pos: 1 4 | --- 5 | # Getting Started 6 | 7 | The community firmware runs from an SD card, so the first step is to prepare the SD card and set up 8 | the TXT to boot from SD card as explained in [installation](installation.md). After installation, the 9 | community firmware can be accessed both via the [TXT touch screen](usage.md) and the 10 | [built-in web interface](usage.md#accessing-the-web-interface). 11 | 12 | To revert back to the original firmware, simply shut down the TXT and remove the SD card. 13 | -------------------------------------------------------------------------------- /docs/en/index.md: -------------------------------------------------------------------------------- 1 | # What is this? 2 | 3 | ![fischertechnik TXT](../media/booting-CFW.png){:.right} 4 | The **community firmware** is a free and modern operating system for your [**fischertechnik TXT**](https://www.fischertechnik.de/en/products/playing/robotics/522429-robotics-txt-controller). Heavily extended internet connectivity including an own app store as well as the ability to control and program models via PC, tablet or smart phone make your TXT fit for the future. 5 | 6 | And best of all: You don't even have to open or modify your TXT for this because the **community firmware** is installed onto sd card and can that way be removed at any time. 7 | 8 | # It's so simple! 9 | 10 | You need: 11 | * your [**fischertechnik TXT**](https://www.fischertechnik.de/en/products/playing/robotics/522429-robotics-txt-controller) 12 | * a micro sd card with 2 to 32GB capacity 13 | 14 | The installation happens in four simple steps: 15 | 16 | 1. Make sure that you are running at least RoboPro Version 4.2.4 (we recommend to use the latest version, currently 4.4.4). 17 | 1. Enable the booting your TXT from an SD card. 18 | 1. Copy the contents of the [community firmware ZIP archive](https://github.com/ftCommunity/ftcommunity-TXT/releases/latest) onto your sd card 19 | 1. Insert the sd card into your TXT and switch it on! 20 | 21 | Detailed information can be found in [the installation guide](getting-started/installation.html) and in the [fischertechnik community forum](https://forum.ftcommunity.de/viewforum.php?f=33). 22 | -------------------------------------------------------------------------------- /docs/en/programming/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Programming 3 | nav-pos: 2 4 | --- 5 | 6 | # Programming 7 | 8 | With the community firmware, you can program your Fischertechnik models in different ways, according to your preferences and programming knowledge. 9 | 10 | * As a beginner, the easisest way is to use the graphical programming environment [Brickly](../../de/programming/brickly). 11 | 12 | * An easy way to program directly on your TXT is the app [startIDE](../../de/programming/startide) 13 | 14 | * Or you can write [Python](python) programs that use the ftrobopy library to access the I/O ports of your TXT 15 | 16 | * And of course, [ROBOPro](../../de/programming/robopro.md) can be used as well, just as with the original firmware. Don't forget to start the app FT-GUI on your TXT zu enable the connection between ROBOPro and the TXT. 17 | -------------------------------------------------------------------------------- /docs/en/programming/python/examples: -------------------------------------------------------------------------------- 1 | ../../../media/examples/python -------------------------------------------------------------------------------- /docs/en/programming/python/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/icon.png -------------------------------------------------------------------------------- /docs/en/programming/python/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: Python 3 | nav-pos: 2 4 | --- 5 | The programming language Python allows you to use all features of your TXT. In this [tutorial](tutorial-1.md) you will learn how to program an application with a graphical user inteface on your TXT. 6 | -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img1.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img10.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img2.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img3.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img4.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img5.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img6.jpg -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img6.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img7.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img8.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut1_img9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut1_img9.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut2_img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut2_img1.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut2_img1b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut2_img1b.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut2_img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut2_img2.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut2_img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut2_img3.png -------------------------------------------------------------------------------- /docs/en/programming/python/tut3_img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/en/programming/python/tut3_img1.png -------------------------------------------------------------------------------- /docs/en/programming/robopro.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: ROBOPro 3 | nav-pos: 3 4 | --- 5 | # Using ROBOPro with the community firmware 6 | 7 | You can use ROBOPro programs with the community firmware by launching the original Fischertechnik user interface on the TXT with the "FT-GUI" app. 8 | Briefly press the "** ON / OFF **" switch (_one second or shorter_) 9 | to get back to the main screen of the community firmware. 10 | 11 | ** Attention: ** Even if the original user interface is running, the 12 | Network settings remain the same as in the community firmware. To connect ROBOPro with the TXT, 13 | select "Other / manual" for the IP address and 14 | specify the IP address of the TXT in the text field in ROBOPro. 15 | 16 | ** Attention: ** In the CFW-GUI you have to start the "FT-GUI" -app to access the TXT with ROBOPro from the PC. Otherwise, the TXT can not accept a connection from the outside. 17 | 18 | ** Attention: ** After an update of RoboPro and/or the original firmware, RoboPRO binaries that were loaded with the CFW and are therefore located on the SD card no longer work and must be replaced manually. 19 | -------------------------------------------------------------------------------- /docs/en/programming/startide.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav-title: startIDE 3 | nav-pos: 3 4 | --- 5 | # startIDE 6 | 7 | With startIDE you can program your models directly on the TXT display. 8 | startIDE is available in the community firmware app store. 9 | 10 | A detailed German manual can be found [here](https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/Manual_150_de.pdf). 11 | 12 | 13 | ![startIDE](https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/screenshots/startIDE01.png) 14 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/favicon.ico -------------------------------------------------------------------------------- /docs/ieconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | #fff 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/media/about-with-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/about-with-menu.png -------------------------------------------------------------------------------- /docs/media/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/about.png -------------------------------------------------------------------------------- /docs/media/booting-CFW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/booting-CFW.png -------------------------------------------------------------------------------- /docs/media/examples: -------------------------------------------------------------------------------- 1 | ../_includes/examples -------------------------------------------------------------------------------- /docs/media/launcher-with-info-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/launcher-with-info-menu.png -------------------------------------------------------------------------------- /docs/media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/logo.png -------------------------------------------------------------------------------- /docs/media/store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/store.png -------------------------------------------------------------------------------- /docs/media/touchscreencalibration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/touchscreencalibration.png -------------------------------------------------------------------------------- /docs/media/txt_cw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/media/txt_cw.jpg -------------------------------------------------------------------------------- /docs/msapplication/largetile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/msapplication/largetile.png -------------------------------------------------------------------------------- /docs/msapplication/mediumtile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/msapplication/mediumtile.png -------------------------------------------------------------------------------- /docs/msapplication/smalltile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/msapplication/smalltile.png -------------------------------------------------------------------------------- /docs/msapplication/widetile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/msapplication/widetile.png -------------------------------------------------------------------------------- /docs/preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/preview.jpg -------------------------------------------------------------------------------- /docs/pwa/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/logo.png -------------------------------------------------------------------------------- /docs/pwa/manifest_de.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | { 5 | "short_name": "ft TXT cfw", 6 | "name": "fischertechnik TXT community firmware", 7 | "description": "{{ site.data.label.description["de"] }}", 8 | "icons": [ 9 | { 10 | "src": "{{site.baseurl}}/pwa/mipmap-mdpi/ic_launcher.png", 11 | "type": "image/png", 12 | "sizes": "48x48" 13 | }, 14 | { 15 | "src": "{{site.baseurl}}/pwa/mipmap-hdpi/ic_launcher.png", 16 | "type": "image/png", 17 | "sizes": "72x72" 18 | }, 19 | { 20 | "src": "{{site.baseurl}}/pwa/mipmap-xhdpi/ic_launcher.png", 21 | "type": "image/png", 22 | "sizes": "96x96" 23 | }, 24 | { 25 | "src": "{{site.baseurl}}/pwa/mipmap-xxhdpi/ic_launcher.png", 26 | "type": "image/png", 27 | "sizes": "144x144" 28 | }, 29 | { 30 | "src": "{{site.baseurl}}/pwa/mipmap-xxxhdpi/ic_launcher.png", 31 | "type": "image/png", 32 | "sizes": "192x192" 33 | }, 34 | { 35 | "src": "{{site.baseurl}}/pwa/logo.png", 36 | "type": "image/png", 37 | "sizes": "512x512" 38 | } 39 | ], 40 | "start_url": "{{site.baseurl}}/de/", 41 | "background_color": "#fff", 42 | "display": "standalone", 43 | "orientation": "portrait", 44 | "scope": "{{site.baseurl}}/", 45 | "theme_color": "#448acc" 46 | } -------------------------------------------------------------------------------- /docs/pwa/manifest_en.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | { 5 | "short_name": "ft TXT cfw", 6 | "name": "fischertechnik TXT community firmware", 7 | "description": "{{ site.data.label.description["en"] }}", 8 | "icons": [ 9 | { 10 | "src": "{{site.baseurl}}/pwa/mipmap-mdpi/ic_launcher.png", 11 | "type": "image/png", 12 | "sizes": "48x48" 13 | }, 14 | { 15 | "src": "{{site.baseurl}}/pwa/mipmap-hdpi/ic_launcher.png", 16 | "type": "image/png", 17 | "sizes": "72x72" 18 | }, 19 | { 20 | "src": "{{site.baseurl}}/pwa/mipmap-xhdpi/ic_launcher.png", 21 | "type": "image/png", 22 | "sizes": "96x96" 23 | }, 24 | { 25 | "src": "{{site.baseurl}}/pwa/mipmap-xxhdpi/ic_launcher.png", 26 | "type": "image/png", 27 | "sizes": "144x144" 28 | }, 29 | { 30 | "src": "{{site.baseurl}}/pwa/mipmap-xxxhdpi/ic_launcher.png", 31 | "type": "image/png", 32 | "sizes": "192x192" 33 | }, 34 | { 35 | "src": "{{site.baseurl}}/pwa/logo.png", 36 | "type": "image/png", 37 | "sizes": "512x512" 38 | } 39 | ], 40 | "start_url": "{{site.baseurl}}/en/", 41 | "background_color": "#fff", 42 | "display": "standalone", 43 | "orientation": "portrait", 44 | "scope": "{{site.baseurl}}/", 45 | "theme_color": "#448acc" 46 | } -------------------------------------------------------------------------------- /docs/pwa/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /docs/pwa/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /docs/pwa/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /docs/pwa/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /docs/pwa/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/ipad_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/ipad_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/ipadpro1_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/ipadpro1_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/ipadpro2_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/ipadpro2_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/ipadpro3_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/ipadpro3_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphone5_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphone5_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphone6_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphone6_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphoneplus_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphoneplus_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphonex_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphonex_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphonexr_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphonexr_splash.png -------------------------------------------------------------------------------- /docs/pwa/splashscreens/iphonexsmax_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-TXT/44c72a5858395fa534491a364965325c1679d423/docs/pwa/splashscreens/iphonexsmax_splash.png -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | Sitemap: {{ site.url }}{{site.baseurl}}/sitemap.xml -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 8 | 9 | {{ site.url }}{{site.baseurl}}/ 10 | 1.0 11 | 12 | {% for page in site.pages %} 13 | 14 | {{ site.url }}{{site.baseurl}}{{ page.url }} 15 | 0.8 16 | 17 | {% endfor %} 18 | 19 | -------------------------------------------------------------------------------- /docs/sw.js: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | var CACHE_NAME = 'cfw-cache-v1'; 5 | var urlsToCache = [ 6 | '{{site.baseurl}}/', 7 | '{{site.baseurl}}/en/', 8 | '{{site.baseurl}}/de/', 9 | '{{site.baseurl}}/css/screen.css' 10 | ]; 11 | 12 | self.addEventListener('install', function(event) { 13 | event.waitUntil( 14 | caches.open(CACHE_NAME) 15 | .then(function(cache) { 16 | console.log('Opened cache'); 17 | return cache.addAll(urlsToCache); 18 | }) 19 | ); 20 | }); 21 | 22 | self.addEventListener('fetch', function(event) { 23 | event.respondWith( 24 | caches.match(event.request) 25 | .then(function(response) { 26 | if (response) { 27 | return response; 28 | } 29 | 30 | return fetch(event.request).then( 31 | function(response) { 32 | if(!response || response.status !== 200 || response.type !== 'basic') { 33 | return response; 34 | } 35 | 36 | var responseToCache = response.clone(); 37 | 38 | caches.open(CACHE_NAME) 39 | .then(function(cache) { 40 | cache.put(event.request, responseToCache); 41 | }); 42 | 43 | return response; 44 | } 45 | ); 46 | }) 47 | ); 48 | }); 49 | 50 | self.addEventListener('activate', function(event) { 51 | 52 | var cacheWhitelist = ['cfw-cache-v1']; 53 | 54 | event.waitUntil( 55 | caches.keys().then(function(cacheNames) { 56 | return Promise.all( 57 | cacheNames.map(function(cacheName) { 58 | if (cacheWhitelist.indexOf(cacheName) === -1) { 59 | return caches.delete(cacheName); 60 | } 61 | }) 62 | ); 63 | }) 64 | ); 65 | }); 66 | -------------------------------------------------------------------------------- /external.desc: -------------------------------------------------------------------------------- 1 | name: FTCOMMUNITY_TXT 2 | -------------------------------------------------------------------------------- /external.mk: -------------------------------------------------------------------------------- 1 | include $(sort $(wildcard $(BR2_EXTERNAL_FTCOMMUNITY_TXT_PATH)/package/*/*.mk)) 2 | 3 | -------------------------------------------------------------------------------- /install_ssh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | [[ $# == 1 ]] || { echo "$0 hostname"; exit 1; } 5 | 6 | txt=$1 7 | 8 | files="am335x-kno_txt.dtb uImage rootfs.img" 9 | boot=/media/sdcard/boot 10 | 11 | read -s -p "Password for root@$txt?" p 12 | echo 13 | 14 | cd output/images/ 15 | 16 | echo "Preparing" 17 | export SSHPASS=$p 18 | sshpass -e ssh root@$txt mkdir -p $boot/new $boot/old 19 | 20 | echo "Copying" 21 | sshpass -e rsync -tv --progress $files root@$txt:$boot/new 22 | 23 | echo "Activating" 24 | sshpass -e ssh root@$txt "cd $boot && mv $files old && mv new/* ." 25 | echo "Success, rebooting" 26 | sshpass -e ssh root@$txt reboot 27 | -------------------------------------------------------------------------------- /package/ft_bt_remote_server/0001-Add-sudoers.d-file.patch: -------------------------------------------------------------------------------- 1 | From 8d488112438c6b072abff53a4f4082692c1e2b96 Mon Sep 17 00:00:00 2001 2 | From: Raphael Jacob 3 | Date: Fri, 27 Jul 2018 19:11:55 +0200 4 | Subject: [PATCH 1/1] Add sudoers.d file 5 | 6 | --- 7 | ft_bt_remote_server.sudoersd | 4 ++++ 8 | 1 file changed, 4 insertions(+) 9 | create mode 100644 ft_bt_remote_server.sudoersd 10 | 11 | diff --git a/ft_bt_remote_server.sudoersd b/ft_bt_remote_server.sudoersd 12 | new file mode 100644 13 | index 0000000..69f8429 14 | --- /dev/null 15 | +++ b/ft_bt_remote_server.sudoersd 16 | @@ -0,0 +1,4 @@ 17 | +## Permissions for ftc access to programs required 18 | +## for BT Control Set server setup 19 | ## 20 | ## Please note that the process name is limited to 15 characters. 21 | + 22 | +ftc ALL = NOPASSWD: /usr/bin/ft_bt_remote_start.sh, /usr/bin/ft_bt_remote_server, /bin/pkill -SIGINT ft_bt_remote_se 23 | -- 24 | 2.18.0 25 | 26 | -------------------------------------------------------------------------------- /package/ft_bt_remote_server/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_FT_BT_REMOTE_SERVER 2 | depends on BR2_PACKAGE_SUDO 3 | bool "ft_bt_remote_server" 4 | select BR2_PACKAGE_BLUEZ5_UTILS 5 | help 6 | The ft_bt_remote_server allows to use the fischertechnik 7 | remote control sender unit from the BT Control Set as a 8 | joystick under Linux. 9 | 10 | https://github.com/ftCommunity/ft_bt_remote_server 11 | -------------------------------------------------------------------------------- /package/ft_bt_remote_server/ft_bt_remote_server.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # ft_bt_remote_server 4 | # 5 | ################################################################################ 6 | 7 | FT_BT_REMOTE_SERVER_VERSION = 038b40b431b3d3558b91717d49cd34e1e435dc5a 8 | FT_BT_REMOTE_SERVER_SITE = $(call github,ftCommunity,ft_bt_remote_server,$(FT_BT_REMOTE_SERVER_VERSION)) 9 | FT_BT_REMOTE_SERVER_LICENSE = GPLv3+ 10 | FT_BT_REMOTE_SERVER_INSTALL_STAGING = NO 11 | FT_BT_REMOTE_SERVER_DEPENDENCIES += bluez5_utils sudo 12 | 13 | define FT_BT_REMOTE_SERVER_BUILD_CMDS 14 | $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) 15 | endef 16 | 17 | define FT_BT_REMOTE_SERVER_INSTALL_TARGET_CMDS 18 | $(INSTALL) -D -m 755 $(@D)/ft_bt_remote_start.sh $(TARGET_DIR)/usr/bin 19 | $(INSTALL) -D -m 755 $(@D)/src/ft_bt_remote_server $(TARGET_DIR)/usr/bin 20 | $(INSTALL) -D -m 0755 $(@D)/ft_bt_remote_server.sudoersd $(TARGET_DIR)/etc/sudoers.d/ft_bt_remote_server 21 | endef 22 | 23 | $(eval $(generic-package)) 24 | -------------------------------------------------------------------------------- /package/libroboint/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_LIBROBOINT 2 | bool "libroboint" 3 | select BR2_PACKAGE_LIBUSB 4 | select BR2_PACKAGE_LIBUSB_COMPAT 5 | select BR2_PACKAGE_BINUTILS 6 | select BR2_PACKAGE_BINUTILS_TARGET 7 | help 8 | Install libroboint 9 | -------------------------------------------------------------------------------- /package/libroboint/libroboint.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # libroboint 4 | # 5 | ################################################################################ 6 | 7 | LIBROBOINT_VERSION = cf25fdba52ad1343317afca683d8b272682f0077 8 | LIBROBOINT_SITE = $(call gitlab,Humpelstilzchen,libroboint,$(LIBROBOINT_VERSION)) 9 | LIBROBOINT_LICENSE = LGPLv2.1 10 | LIBROBOINT_DEPENDENCIES = libusb host-libusb libusb-compat host-libusb-compat binutils 11 | 12 | $(eval $(cmake-package)) 13 | -------------------------------------------------------------------------------- /package/python-ftrobopy/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_FTROBOPY 2 | bool "python-ftrobopy" 3 | select BR2_PACKAGE_PYTHON_SERIAL 4 | help 5 | Python interface for the Fischertechnik ROBOTICS TXT Controller 6 | 7 | https://github.com/ftrobopy/ftrobopy 8 | -------------------------------------------------------------------------------- /package/python-ftrobopy/python-ftrobopy.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-ftrobopy 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_FTROBOPY_VERSION = 3b072b2b6cc352f3c3b627fbe180e4f6b6dddd3b 8 | PYTHON_FTROBOPY_SITE = $(call github,ftrobopy,ftrobopy,$(PYTHON_FTROBOPY_VERSION)) 9 | PYTHON_FTROBOPY_LICENSE = MIT 10 | PYTHON_FTROBOPY_LICENSE_FILES = LICENSE 11 | PYTHON_FTROBOPY_INSTALL_STAGING = NO 12 | PYTHON_FTROBOPY_SETUP_TYPE = setuptools 13 | PYTHON_FTROBOPY_DEPENDENCIES = python-serial 14 | 15 | ifeq ($(BR2_PACKAGE_PYTHON),y) 16 | PYTHON_FTROBOPY_DEPENDENCIES += python 17 | else ifeq ($(BR2_PACKAGE_PYTHON3),y) 18 | PYTHON_FTROBOPY_DEPENDENCIES += python3 19 | endif 20 | 21 | $(eval $(python-package)) 22 | -------------------------------------------------------------------------------- /package/python-fttxpy/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_FTTXPY 2 | bool "libroboint" 3 | select BR2_PACKAGE_PYTHON_PYUDEV 4 | select BR2_PACKAGE_PYTHON_SERIAL 5 | help 6 | Install Python-fttxpy 7 | -------------------------------------------------------------------------------- /package/python-fttxpy/python-fttxpy.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-fttxpy 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_FTTXPY_VERSION = 0.9.3 8 | PYTHON_FTTXPY_SITE = $(call github,ski7777,fttxpy,$(PYTHON_FTTXPY_VERSION)) 9 | PYTHON_FTTXPY_LICENSE = GPL-3.0 10 | PYTHON_FTTXPY_DEPENDENCIES = python-pyudev python-serial 11 | PYTHON_FTTXPY_LICENSE = MIT 12 | PYTHON_FTTXPY_LICENSE_FILES = LICENSE 13 | PYTHON_FTTXPY_INSTALL_STAGING = NO 14 | PYTHON_FTTXPY_SETUP_TYPE = setuptools 15 | 16 | $(eval $(python-package)) 17 | -------------------------------------------------------------------------------- /package/python-libroboint/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LIBROBOINT 2 | bool "pylibroboint" 3 | depends on BR2_PACKAGE_LIBROBOINT 4 | help 5 | Python module for libroboint 6 | -------------------------------------------------------------------------------- /package/python-libroboint/python-libroboint.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python_libroboint 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_LIBROBOINT_VERSION = cf25fdba52ad1343317afca683d8b272682f0077 8 | PYTHON_LIBROBOINT_SITE = $(call gitlab,Humpelstilzchen,libroboint,$(LIBROBOINT_VERSION)) 9 | PYTHON_LIBROBOINT_LICENSE = LGPLv2.1 10 | PYTHON_LIBROBOINT_SUBDIR = python 11 | PYTHON_LIBROBOINT_SETUP_TYPE = setuptools 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /package/python-lidar/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LIDAR 2 | bool "python-lidar" 3 | help 4 | VL53L0X Python interface 5 | -------------------------------------------------------------------------------- /package/python-lidar/python-lidar.hash: -------------------------------------------------------------------------------- 1 | # md5 locally extracted 2 | md5 5ba84b8189827015e405df9566176fe0 1.0.2.tar.gz 3 | md5 f3539974e62d9ae6a4bcb4425421d19e v1.0.4.tar.gz 4 | -------------------------------------------------------------------------------- /package/python-lidar/python-lidar.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-lidar 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_LIDAR_VERSION = 1.0.4 8 | PYTHON_LIDAR_SOURCE = v$(PYTHON_LIDAR_VERSION).tar.gz 9 | PYTHON_LIDAR_SITE = https://github.com/Gadgetoid/VL53L0X-python/archive/refs/tags 10 | #https://github.com/johnbryanmoore/VL53L0X_rasp_python/archive/refs/tags 11 | PYTHON_LIDAR_SETUP_TYPE = setuptools 12 | PYTHON_LIDAR_LICENSE = MIT 13 | PYTHON_LIDAR_LICENSE_FILES = LICENSE.rst 14 | 15 | $(eval $(python-package)) 16 | 17 | #define PYTHON_LIDAR_BUILD_CMDS 18 | # $(MAKE) $(TARGET_CONFIGURE_OPTS) PYTHON_INCLUDES= -C $(@D) all 19 | #endef 20 | #$(eval $(generic-package)) 21 | -------------------------------------------------------------------------------- /package/python-lumacore/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LUMACORE 2 | bool "python-lumacore" 3 | select BR2_PACKAGE_PYTHON_PILLOW # runtime 4 | select BR2_PACKAGE_PYTHON_SMBUS2 # runtime 5 | help 6 | A component library to support SBC display drivers. 7 | 8 | https://github.com/rm-hull/luma.core 9 | -------------------------------------------------------------------------------- /package/python-lumacore/python-lumacore.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/luma.core/json 2 | md5 5eba3e405285fdf9dd187e2c0c802f67 luma.core-2.4.0.tar.gz 3 | sha256 cf5fdf3563d5ec56e2f792f3a2f432abaeac517a0b05a10a757a4c5a26bb2e5d luma.core-2.4.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 fe8e4e3171272f5d35aa111cad7a00af5efc80b552270f55d69354de8f22519a LICENSE.rst 6 | -------------------------------------------------------------------------------- /package/python-lumacore/python-lumacore.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-lumacore 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_LUMACORE_VERSION = 2.4.0 8 | PYTHON_LUMACORE_SOURCE = luma.core-$(PYTHON_LUMACORE_VERSION).tar.gz 9 | PYTHON_LUMACORE_SITE = https://files.pythonhosted.org/packages/b5/d0/dd025f8f665024ec8a0aab928fcb5fb766980f83b1d0127211ccee01054b 10 | PYTHON_LUMACORE_SETUP_TYPE = setuptools 11 | PYTHON_LUMACORE_LICENSE = MIT 12 | PYTHON_LUMACORE_LICENSE_FILES = LICENSE.rst 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /package/python-lumaled_matrix/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LUMALED_MATRIX 2 | bool "python-lumaled_matrix" 3 | select BR2_PACKAGE_PYTHON_LUMACORE # runtime 4 | help 5 | A library to drive a MAX7219 LED serializer (using SPI) and 6 | WS2812 NeoPixels (using DMA). 7 | 8 | https://github.com/rm-hull/luma.led_matrix 9 | -------------------------------------------------------------------------------- /package/python-lumaled_matrix/python-lumaled_matrix.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/luma.led_matrix/json 2 | md5 868576a7860dae3f6710ca418c2e7af0 luma.led_matrix-1.7.0.tar.gz 3 | sha256 0e1803384bd1d44b2e9a91bb1e139910ceb8684a59703d2241f0bbc002f1374f luma.led_matrix-1.7.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 0e73ce77e7f847de0cf335bd8f3a20be0acf0c198149a05b1a112203961c26c4 LICENSE.rst 6 | -------------------------------------------------------------------------------- /package/python-lumaled_matrix/python-lumaled_matrix.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-lumaled_matrix 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_LUMALED_MATRIX_VERSION = 1.7.0 8 | PYTHON_LUMALED_MATRIX_SOURCE = luma.led_matrix-$(PYTHON_LUMALED_MATRIX_VERSION).tar.gz 9 | PYTHON_LUMALED_MATRIX_SITE = https://files.pythonhosted.org/packages/cc/41/8cf7078e77da1ededef2bcc958114afc52725e948b01f16fa3542c914bbd 10 | PYTHON_LUMALED_MATRIX_SETUP_TYPE = setuptools 11 | PYTHON_LUMALED_MATRIX_LICENSE = MIT 12 | PYTHON_LUMALED_MATRIX_LICENSE_FILES = LICENSE.rst 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /package/python-lumaoled/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_LUMAOLED 2 | bool "python-lumaoled" 3 | select BR2_PACKAGE_PYTHON_LUMACORE # runtime 4 | help 5 | A small library to drive an OLED device with either 6 | SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1331, 7 | SSD1351 or SH1106 chipset. 8 | 9 | https://github.com/rm-hull/luma.oled 10 | -------------------------------------------------------------------------------- /package/python-lumaoled/python-lumaoled.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/luma.oled/json 2 | md5 44e62e74c0c745ec9bcf63646efc0d1f luma.oled-3.9.0.tar.gz 3 | sha256 e51c2ce5b88d591f9c64ab49d6bd5abd26759b87180706d615fec796569b6f6b luma.oled-3.9.0.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 85346ca55ea85ba4c30d8e11d71217956d7429ce0198b396a4400228467ad3ce LICENSE.rst 6 | -------------------------------------------------------------------------------- /package/python-lumaoled/python-lumaoled.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-lumaoled 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_LUMAOLED_VERSION = 3.9.0 8 | PYTHON_LUMAOLED_SOURCE = luma.oled-$(PYTHON_LUMAOLED_VERSION).tar.gz 9 | PYTHON_LUMAOLED_SITE = https://files.pythonhosted.org/packages/8d/cc/f2f0b1a10f6b3655bcd609c007e119acc0cbf0f880ec3812616336287ddc 10 | PYTHON_LUMAOLED_SETUP_TYPE = setuptools 11 | PYTHON_LUMAOLED_LICENSE = MIT 12 | PYTHON_LUMAOLED_LICENSE_FILES = LICENSE.rst 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /package/python-pandas/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_PANDAS 2 | bool "python-pandas" 3 | select BR2_PACKAGE_PYTHON_DATEUTIL 4 | select BR2_PACKAGE_PYTHON_PYTZ 5 | select BR2_PACKAGE_PYTHON_NUMPY 6 | select BR2_PACKAGE_PYTHON_MATPLOTLIB 7 | select BR2_PACKAGE_PYTHON3_BZIP2 8 | select BR2_PACKAGE_HOST_PYTHON_NUMPY 9 | select BR2_PACKAGE_HOST_PYTHON_CYTHON 10 | help 11 | Pandas ML library. 12 | 13 | -------------------------------------------------------------------------------- /package/python-pandas/python-pandas.hash: -------------------------------------------------------------------------------- 1 | # md5, sha256 from https://pypi.org/pypi/pandas/json 2 | md5 c70bbdfed7f1b9807a738f85fcdd9767 pandas-0.25.3.tar.gz 3 | sha256 52da74df8a9c9a103af0a72c9d5fdc8e0183a90884278db7f386b5692a2220a4 pandas-0.25.3.tar.gz 4 | # Locally computed sha256 checksums 5 | sha256 79e4e818a662c6c02b052499bd6ededa18e780d3c026339834cc09455fea6ced LICENSE -------------------------------------------------------------------------------- /package/python-pandas/python-pandas.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-pandas 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_PANDAS_VERSION = 0.25.3 8 | PYTHON_PANDAS_SOURCE = pandas-$(PYTHON_PANDAS_VERSION).tar.gz 9 | PYTHON_PANDAS_SITE = https://files.pythonhosted.org/packages/b7/93/b544dd08092b457d88e10fc1e0989d9397fd32ca936fdfcbb2584178dd2b 10 | PYTHON_PANDAS_DEPENDENCIES = host-python-numpy 11 | PYTHON_PANDAS_SETUP_TYPE = setuptools 12 | PYTHON_PANDAS_LICENSE = BSD 13 | PYTHON_PANDAS_LICENSE_FILES = LICENSE 14 | 15 | ifneq ($(BR2_PACKAGE_PYTHON_PANDAS_TESTS),y) 16 | define PYTHON_PANDAS_REMOVE_TESTS 17 | rm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pandas/tests 18 | endef 19 | PYTHON_PANDAS_POST_INSTALL_TARGET_HOOKS += PYTHON_PANDAS_REMOVE_TESTS 20 | endif 21 | 22 | $(eval $(python-package)) 23 | -------------------------------------------------------------------------------- /package/python-robolt/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_ROBOLT 2 | bool "python-robolt" 3 | select BR2_PACKAGE_PYTHON_PYUSB 4 | help 5 | Python interface for the Fischertechnik RoboLT 6 | 7 | https://github.com/ftCommunity/python-robolt 8 | -------------------------------------------------------------------------------- /package/python-robolt/python-robolt.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-robolt 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_ROBOLT_VERSION = c4800b27669e511f31f85ac3876e1ae0e288c3b3 8 | PYTHON_ROBOLT_SITE = $(call github,ftCommunity,python-robolt,$(PYTHON_ROBOLT_VERSION)) 9 | PYTHON_ROBOLT_LICENSE = MIT 10 | PYTHON_ROBOLT_LICENSE_FILES = LICENSE 11 | PYTHON_ROBOLT_INSTALL_STAGING = NO 12 | PYTHON_ROBOLT_SETUP_TYPE = setuptools 13 | PYTHON_ROBOLT_DEPENDENCIES += python-pyusb 14 | 15 | ifeq ($(BR2_PACKAGE_PYTHON),y) 16 | PYTHON_ROBOLT_DEPENDENCIES += python 17 | else ifeq ($(BR2_PACKAGE_PYTHON3),y) 18 | PYTHON_ROBOLT_DEPENDENCIES += python3 19 | endif 20 | 21 | $(eval $(python-package)) 22 | -------------------------------------------------------------------------------- /package/python-semantic-version1/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_SEMANTIC_VERSION1 2 | bool "python-semantic-version" 3 | depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 4 | help 5 | Semantic version in Python 6 | 7 | https://pypi.python.org/pypi/semantic_version 8 | -------------------------------------------------------------------------------- /package/python-semantic-version1/python-semantik-versions.hash: -------------------------------------------------------------------------------- 1 | sha256 bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c semantic_version-2.10.0.tar.gz 2 | -------------------------------------------------------------------------------- /package/python-semantic-version1/python-semantik-versions.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-semantic-version 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_SEMANTIC_VERSION1_VERSION = 2.10.0 8 | PYTHON_SEMANTIC_VERSION1_SOURCE = semantic_version-$(PYTHON_SEMANTIC_VERSION1_VERSION).tar.gz 9 | PYTHON_SEMANTIC_VERSION1_SITE = https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595 10 | PYTHON_SEMANTIC_VERSION1_SETUP_TYPE = setuptools 11 | PYTHON_SEMANTIC_VERSION1_LICENSE = BSD 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /package/python-sip-qt5/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_SIP_QT5 2 | bool "python-sip-qt5" 3 | depends on BR2_PACKAGE_PYTHON_PYQT5 4 | depends on BR2_PACKAGE_PYTHON_SIP 5 | help 6 | SIP is a tool that makes it very easy to create Python bindings 7 | for C and C++ libraries. It was originally developed to create PyQt, 8 | the Python bindings for the Qt toolkit, but can be used to 9 | create bindings for any C or C++ library. -------------------------------------------------------------------------------- /package/python-sip-qt5/python-sip-qt5.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-SIP-QT5 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_SIP_QT5_VERSION = 12.12.1 8 | PYTHON_SIP_QT5_SITE = https://files.pythonhosted.org/packages/c1/61/4055e7a0f36339964956ff415e36f4abf82561904cc49c021da32949fc55 9 | PYTHON_SIP_QT5_SOURCE = PyQt5_sip-${PYTHON_SIP_QT5_VERSION}.tar.gz 10 | PYTHON_SIP_QT5_LICENSE = MIT 11 | PYTHON_SIP_QT5_LICENSE_FILES = LICENSE 12 | PYTHON_SIP_QT5_SETUP_TYPE = setuptools 13 | PYTHON_SIP_QT5_DEPENDENCIES += python-sip 14 | 15 | $(eval $(python-package)) 16 | -------------------------------------------------------------------------------- /package/python-smbus2/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_SMBUS2 2 | bool "python-smbus2" 3 | help 4 | smbus2 is a drop-in replacement for smbus-cffi/smbus-python 5 | in pure Python. 6 | 7 | https://github.com/kplindegaard/smbus2 8 | -------------------------------------------------------------------------------- /package/python-smbus2/python-smbus2.hash: -------------------------------------------------------------------------------- 1 | md5 c561cbc6fb87fab7953b79e5aa148b81 smbus2-0.4.2.tar.gz 2 | sha256 634541ed794068a822fe7499f1577468b9d4641b68dd9bfb6d0eb7270f4d2a32 smbus2-0.4.2.tar.gz 3 | -------------------------------------------------------------------------------- /package/python-smbus2/python-smbus2.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-smbus2 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_SMBUS2_VERSION = 0.4.2 8 | PYTHON_SMBUS2_SOURCE = smbus2-$(PYTHON_SMBUS2_VERSION).tar.gz 9 | PYTHON_SMBUS2_SITE = https://files.pythonhosted.org/packages/7c/01/18a9c3fccc2ddc0af16ddbe52aadc4585fbd1e7ae4ee32e780abbfc7fc97 10 | PYTHON_SMBUS2_SETUP_TYPE = setuptools 11 | PYTHON_SMBUS2_LICENSE = MIT 12 | 13 | $(eval $(python-package)) 14 | -------------------------------------------------------------------------------- /package/python-zbarlight/Config.in: -------------------------------------------------------------------------------- 1 | config BR2_PACKAGE_PYTHON_ZBARLIGHT 2 | bool "python-zbarlight" 3 | depends on BR2_PACKAGE_ZBAR 4 | depends on BR2_PACKAGE_PYTHON_PILLOW 5 | help 6 | Python3 compatible bindings for the zbar library 7 | 8 | https://github.com/Polyconseil/zbarlight 9 | -------------------------------------------------------------------------------- /package/python-zbarlight/python-zbarlight.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # python-zbarlight 4 | # 5 | ################################################################################ 6 | 7 | PYTHON_ZBARLIGHT_VERSION = 3.0 8 | PYTHON_ZBARLIGHT_SITE = $(call github,Polyconseil,zbarlight,$(PYTHON_ZBARLIGHT_VERSION)) 9 | PYTHON_ZBARLIGHT_LICENSE = MIT 10 | PYTHON_ZBARLIGHT_LICENSE_FILES = LICENSE 11 | PYTHON_ZBARLIGHT_SETUP_TYPE = setuptools 12 | PYTHON_ZBARLIGHT_DEPENDENCIES += zbar 13 | 14 | $(eval $(python-package)) 15 | -------------------------------------------------------------------------------- /patches/x11vnc/0003-Fix-multi-definition.patch: -------------------------------------------------------------------------------- 1 | From a48b0b1cd887d7f3ae67f525d7d334bd2feffe60 Mon Sep 17 00:00:00 2001 2 | From: Alexander Tsoy 3 | Date: Tue, 28 Jan 2020 22:21:01 +0300 4 | Subject: [PATCH] Fix build with -fno-common 5 | 6 | GCC 10 defaults to -fno-common 7 | --- 8 | src/util.c | 3 +++ 9 | src/util.h | 6 +++--- 10 | 2 files changed, 6 insertions(+), 3 deletions(-) 11 | 12 | diff --git a/src/util.c b/src/util.c 13 | index a82a1a4..6a52ebf 100644 14 | --- a/src/util.c 15 | +++ b/src/util.c 16 | @@ -47,6 +47,9 @@ int hxl = 0; 17 | #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD 18 | MUTEX(x11Mutex); 19 | MUTEX(scrollMutex); 20 | +MUTEX(clientMutex); 21 | +MUTEX(inputMutex); 22 | +MUTEX(pointerMutex); 23 | #endif 24 | 25 | int nfix(int i, int n); 26 | diff --git a/src/util.h b/src/util.h 27 | index 35c1afd..99b5dd1 100644 28 | --- a/src/util.h 29 | +++ b/src/util.h 30 | @@ -102,9 +102,9 @@ extern struct timeval _mysleep; 31 | #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD 32 | extern MUTEX(x11Mutex); 33 | extern MUTEX(scrollMutex); 34 | -MUTEX(clientMutex); 35 | -MUTEX(inputMutex); 36 | -MUTEX(pointerMutex); 37 | +extern MUTEX(clientMutex); 38 | +extern MUTEX(inputMutex); 39 | +extern MUTEX(pointerMutex); 40 | #endif 41 | 42 | #define X_INIT INIT_MUTEX(x11Mutex) 43 | -- 44 | 2.24.1 45 | 46 | -------------------------------------------------------------------------------- /update_translation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for tsfile in `find board -name '*_*.ts' -type f`; do 4 | echo "$tsfile" 5 | pyfile=${tsfile/_*.ts/.py} 6 | if [ -e $pyfile ]; then 7 | pylupdate5 $pyfile -ts $tsfile 8 | lconvert -i $tsfile -o ${tsfile/.ts/.qm} 9 | fi 10 | done 11 | --------------------------------------------------------------------------------