• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
  • Created about 10 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

List of hints and Q&As to get most of your Linux/Android device

(c) 2014-2018 Paul Sokolovsky. Portions of content (c) by their respective authors.

Linux

How to find out version of kernel running

If that kernel is booted and you have access to console:

uname -a

Alternatively:

cat /proc/version

If you have only kernel image file ... (tba).

How to see what devices/partitions are mounted and their filesystem, types

mount

Alternatively:

cat /proc/mounts

How to read kernel message log (including boot log)

dmesg

Kernel log contains all messages from the beginning of kernel boot, but it is implemented as a circular buffer (of configurable size), so newer messages may replace older.

Is it possible to read kernel log if dmesg is not available?

cat /proc/kmsg will block and dump ''new'' kernel messages. This will work reliably only if there are no other consumer(s) of /proc/kmsg (note: on typical fully booted Linux system there's - syslogd, etc.), otherwise the output may be garbled.

How to read system log

On a full-fledged Linux system, system log is usually accessible as /var/log/messages. Recently, some particular distributions started to play original, for example, in Ubuntu 12.04 /var/log/messages is empty and instead /var/log/syslog may contain some, or all, of system log messages.

On an embedded system, a busybox syslogs may be used, providing circular buffer without file backing storage. It can be accessed using logread command.

How to write to system log

logger command does that.

How to find out config of a kernel?

With a running kernel, if it was built with CONFIG_IKCONFIG_PROC, the config can be read as /proc/config.gz. For a zImage file, scripts/extract-ikconfig can be used to extract it (just CONFIG_IKCONFIG is required for this).

How to list loaded kernel modules?

lsmod

Alternatively:

cat /proc/modules

How to load kernel modules?

Low-level command to load a specific filename is:

insmod /path/<module>.ko

Higher level command is:

modprobe <module>

This will look for modules located in /lib/modules/<kernel_version> and requires support files generated by depmod.

How to force loading of kernel module?

Module loading is subject to many checks (see below), so and kernel may refuse to load improper one. If CONFIG_MODULE_FORCE_LOAD is defined, it is possible to force-load module nonetheless. Unfortunately, it's not possible to force load with (recent) insmod. It can be done with modprobe -f (modprobe ---help for other force options).

How to unload kernel modules?

rmmod <module>

Module unloading usually available, but still depends on CONFIG_MODULE_UNLOAD. Module may refuse to unload if other modules depend on it, or if it's in particular state (which also includes states like "hanged" and "gone awry"), in which case it's possible to force unload (rmmod -f), if CONFIG_MODULE_FORCE_UNLOAD was defined.

Can kernel modules built for one version be used with another kernel version?

In general, this is not possible. With Linux kernel's "stable API is nonsense" attitude, anything in the kernel can be changed at any time

  • this includes APIs which can be called by a module, module format and layout itself, etc. Not only that, same kernel version built with different configuration options may have differences in these aspects (it's possible to #ifdef some fields in structures and even parameters to function calls).

That said, for close kernel versions and small differences in configuration, chances of fatal incompatibilities of modules are low. However, kernel itself has "helpful guards" to preclude usage of modules with different kernel version. By default (CONFIG_MODVERSIONS is not defined), kernel's and module's vermagic strings are compared, which are of the form: "3.2.0-32-generic SMP mod_unload modversions 686", i.e. include kernel version, extraversion, then tags for most important configuration params. If vermagics don't match, module loading fails.

Even more annoying "protection" is employed if CONFIG_MODVERSIONS is defined. In this case, each kernel exported symbol gets hash (CRC) signature based on the parameter signature on the underlying C function, stored both in kernel and module. These signatures are compared, and on any mismatch, loading fails. The only easing with this is that when vermagics comparison is done, kernel versions are ignored, i.e. if different kernel versions don't have param signature changes and have same core config params, a module will work across such versions.

There's also support for forced module load, but that will work only if enabled in kernel config (CONFIG_MODULE_FORCE_LOAD).

How to get detailed information about a kernel module

modinfo <module>

This will dump main module properties and vermagic string. As a parameter, both a filename and system module name (as available in /lib/modules) can be given.

To dump modversions hashes:

modprobe --dump-modversions <module>.ko

How to build out of tree kernel module

From official kernel docs: Documentation/kbuild/modules.txt, for a module source in current dir:

make -C <path_to_kernel_src> M=$PWD

Build against currently running kernel (requires linux-headers package installed):

make -C /lib/modules/$(uname -r)/build M=$PWD

How to install built kernel modules to a specific location

Useful when cross-compiling, etc.

make modules_install INSTALL_MOD_PATH=/path/where

More details: Documentation/kbuild/modules.txt.

How to setup NAT (masquerading)

If you have another host/embedded device/QEMU connected to a local host interface, and you would like to let that device connect to the Internet, masquerading should be set up for device's IP address:

iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.2.2

(This assumes that the host has Internet connection and has IP forwarding enabled).

How to connect to WiFi network from bare command-line (using wpa_supplicant & wpa_cli)

If you're not on bare command-line, make sure you killed already running wpa_supplicant as well as other daemons which may respawn it (e.g. NetworkManager on Ubuntu).

Make sure that WiFi interface is up. It otherwise doesn't need to have any special configuration:

ifconfig wlan0 up

Run:

wpa_supplicant -i wlan0 -g /tmp/wpa -C /tmp

-g specifies "global control socket". The caveat about is that many commands are not supported via it, issuing them via it leads to obfuscated "UNKNOWN COMMAND" reply. So, it's important to specify -C switch, which takes directory path under which individual control sockets for each WiFi interface will be stored.

In another window, run:

wpa_cli -p /tmp

-p option gives path to per-WiFi-interface control socket dir (-C of wpa_supplicant). Issue following commands in wpa_cli interactive session (ignore # lines):

# Scan for available APs
> scan
OK
# Wait a bit, then view results
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
> scan_results 
...
# Create new AP entry, returned is ID of new entry
> add_network
0
# Start setting AP parameters
> set_network 0 ssid "MY_AP"
OK
> set_network 0 psk "password"
OK
# These should be all params requires for WPA
# Activate network
> select_network 0
OK
# Trigger connection
> reconnect
OK
<3>SME: Trying to authenticate with xx:xx:xx:xx:xx:xx (SSID='MY_AP' freq=2462 MHz)
<3>Trying to associate with xx:xx:xx:xx:xx:xx (SSID='MY_AP' freq=2462 MHz)
<3>Associated with xx:xx:xx:xx:xx:xx

This will have wlan0 connected to AP. Then get IP address via DHCP:

dhclient wlan0

And configure /etc/resolv.conf to suitable DNS address (e.g. 8.8.8.8 to be monitored by Google):

nameserver 8.8.8.8

The instructions above show how to run wpa_supplicant without any stored configuration, and instead configure it dynamically (e.g., programmatically). Alternatively, using config:

# Create simple config file
wpa_passphrase MY_AP >wpa.conf
# Enter password
...
wpa_supplicant -i wlan0 -c wpa.conf

How to test network multicasting

Multicasting is basis of many usability protocols and services (e.g. mDNS, UPNP, DLNA, etc.), and yet means to query/test/diagnose it are not widely known, if not to say obfuscated. At the same time, multicasting has known andregular issues, when used on network interfaces differing from Ethernet, for which it was initially conceived (these other networking types include WiFi/other wireless, loopback, etc.)

Multicast is similar to broadcast, except individual hosts don't receive datagrams unconditionally, but need to join "multicast group" (other way to think about it is a PubSub pattern). Multicast groups are represented by special IP addresses, e.g. for IPv4 it's 224.0.0.0 to 239.255.255.255. Some multicast IPs have predefined (STD/RFC) meaning, other are supposedly can be (dynamically) allocated per purpose.

224.0.0.1 is a "local network" predefined address. All hosts on current subnetwork are supposed to (auto)join it. In this regard, that address is similar to local network broadcast, 255.255.255.255. The basic means to test multicasting is ping this address:

ping 224.0.0.1

The expected outcome is that each host which is member of multicast group will respond (ping thus will receive duplicate responses and will report so).

However:

  • A firewall will likely interfere. Note that broadcast/multicast pings are especially not firewall friendly, as replies are not received from destination of packet (ping packets are sent to 224.0.0.1, but received from individual host IPs). The easiest way to deal with this is usually to disable firewall during testing.
  • Besides firewall, modern Linux kernels ignore broadcast/multicast pings by default. To enable responses to such pings use:
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

(needs to be done on each machine from which you want to receive responses of course).

  • The network interface used should have multicast support enabled, and e.g. loopback (lo) is notoriously known to not have it enabled by distros by default.

If you have a normal Ethernet/WiFi interface, following first 2 suggestions should lead to ping 224.0.0.1 to get responses at least from the host you run it on.

For other multicast groups, they should be pingable as long as a socket bound to that group is active on a host.

To further diagnose multicast settings, refer to following /proc files:

  • /proc/net/igmp (IP-level multicast)
  • /proc/net/dev_mcast (Physical-level multicast)

Few other points:

  • It's not required to be a member of multicast group to send a datagram to it.
  • To send a datagram to multicast address, sendto() call should be used, if reply is expected to be received on the same socket. connect() + send() won't work, because reply won't come from a multicast address, but reather from a real host address.

Android

How to enable ADB connection on device

This is called "USB debugging" and is available in Settings -> Developer options. Developer options themselves are concealed by default in Android 4.2 and higher. From https://developer.android.com/studio/debug/dev-options:

On Android 4.1 and lower, the Developer options screen is available by default. On Android 4.2 and higher, you must enable this screen. To enable developer options, tap the Build Number option 7 times. You can find this option in one of the following locations, depending on your Android version:

  • Android 9 (API level 28) and higher: Settings > About Phone > Build Number
  • Android 8.0.0 (API level 26) and Android 8.1.0 (API level 26): Settings > System > About Phone > Build Number
  • Android 7.1 (API level 25) and lower: Settings > About Phone > Build Number

How to configure udev rules for using adb over USB

Create /etc/udev/rules.d/99-android.rules with content:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0660", GROUP="plugdev"

Here, 0bb4 is a USB vendor ID, you may need to adjust it for your device; plugdev - is typical pluggable device access group on most modern Linux distros.

Based on: http://developer.android.com/tools/device.html

How to connect adb over WiFi (or TCP/IP in general)

On Android command line:

su
stop adbd
setprop service.adb.tcp.port 6565
start adbd

Use netcfg to check device IP. (In newer Android versions, standard ifconfig or ip addr may work.)

Per above (su), this requires a rooted device. An alternative is to connect device using USB first, and run adb tcpip 6565, after which USB cable can be disconnected.

After that, on host:

adb connect <IP>:6565
adb shell

How secure is ADB connection?

ADB protocol does not seem to support encryption (protocol description: https://android.googlesource.com/platform/system/core/+/master/adb/protocol.txt). This means that using it over broadcasting non-encrypted physical medium (like Ethernet or public WiFi) is insecure.

Until Android 4.2.2, protocol did not support authentication, which made it highly insecure. There are known exploits of trojan "charging stations" used to break into devices.

In Android 4.2.1_r1, public key authentication was added to adb protocol: https://github.com/android/platform_system_core/commit/d5fcafaf41f8ec90986c813f75ec78402096af2d This requires ADB version 1.0.31 (available in SDK Platform-tools r16.0.1 or higher). User is required to confirm connection to a new ADB host on a device itself, for one time connection or to remember the approval. In the latter case, host key(s) are saved in /data/misc/adb/adb_keys. There can be pre-installed keys in /adb_keys.

How to verify ADB host fingerprint

When connecting to a new ADB host, an Android device shows an RSA fingerprint, however, it takes some effort to check that this fingerprint actually belongs to a host.

On a host, ADB public key is in $HOME/.android/adb_key.pub. To get its fingerprint:

awk '{print $1}' < adbkey.pub|openssl base64 -A -d -a | openssl md5 -c

Based on: http://nelenkov.blogspot.de/2013/02/secure-usb-debugging-in-android-422.html

How to read Android logs

On Android command line:

logcat

See logcat --help

From host:

adb logcat

How to list installed Android packages?

On device:

pm list packages

How to install Android package (.apk)?

On device:

pm install app.apk

How to install .apk using adb (from host command line)

From host:

adb install app.apk

To force install even if already exists:

adb install -r app.apk

adb --help for more.

How to remove installed Android package?

On device:

pm uninstall <package.name>

This won't work for system packages located in /system/app, see question below on how to remove them.

How to get around lack of cp in default Android toolbox

Try:

cat /path/from >/path/to

Is there a writable location on the main filesystems on non-rooted device?

First of all, there's /mnt/sdcard, which is accessible to default adb user. However, that filesystem is mounted noexec, so it's not possible to run any executables from there. However, there's /data/local which is both writable and executable. On newer Android versions (checked with Android 7), only /data/local/tmp is such.

How to get temporary root access on ro.secure=1 devices

An exploit executable is needed. For Android 2.x, zergRush is a well-known app. On host:

unzip zergRush.zip
adb push zergRush /data/local
adb shell
cd /data/local
chmod 770 zergRush
./zergRush

If you get error like [-] Cannot copy boomsh.: Permission denied, it's likely zergRush was already run previously and left some cruft, remove it and retry (on device):

rm tmp/sh
rm tmp/boomsh
./zergRush

How to install Android su with frontend (permanent root)

Get root shell as described above. Then (you can get newer versions than 3.0.7, but they're kinda bloat):

http://downloads.noshufou.netdna-cdn.com/superuser/Superuser-3.0.7-efghi-signed.zip
unzip Superuser-3.0.7-efghi-signed.zip
adb push system/bin/su /system/bin/
adb push system/app/Superuser.apk /system/app/
adb shell chmod 06755 /system/bin/su

Where vendor-provided software is located in filesystem?

Preinstalled application are in /system/app, unlike user-installed applications, which are in /data/app .

How to remove bloatware from /system/app

This requires root.

On host:

adb remount
adb shell

Then on device:

cd /system/app
rm bloatware.apk
sync

You may want to reboot to clear app cache, though apps should be gone immediately.

What are user and group ids used by Android?

These are defined in system/core/include/private/android_filesystem_config.h

Is it possible to use stdout/stderr/printf/System.out.println/etc. in Android?

Reference: http://developer.android.com/tools/debugging/debugging-log.html#viewingStd

By default, Android redirects stdout, etc. to /dev/null. However, log.redirect-stdio system property can be set to true to redirect to system log (logcat) instead. This takes effect after system restart (and has effect during current system session), so the complete command sequence to enable stdout logging is:

stop
setprop log.redirect-stdio true
start

How to list Android services?

service list

How to call Android services from command line?

Based on http://www.slideshare.net/jserv/android-ipc-mechanism

Getting Java class implementing service:

service call activity 1598968902

1598968902 (0x5f4e5446) is INTERFACE_TRANSACTION.

Prepare to dial number "123":

service call phone 1 s16 123

"1" is a method #1 per ITelephony.aidl, i.e. dial().

How to start/stop Android daemons

start & stop commands do that. E.g.:

stop vold

Alternatively, this can be done by setting system properties:

setprop ctl.stop vold
setprop ctl.start vold

How to start/stop complete Android environment

For this, zygote daemon should be stopped:

stop zygote

zygote is also a default argument for start/stop, so following will work too:

stop

How to dump detailed service state?

dumpsys <service> dumps loadsome of information about internal service state. Omit service name to dump state of all services.

How to Allow Apps To Write Files to USB Mass Storage Devices in Android

Based on:

Edit /system/etc/permissions/platform.xml to add <group gid="media_rw" /> to WRITE_EXTERNALS_STORAGE permission:

<permission name="android.permission.WRITE_EXTERNAL_STORAGE">
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>

Reboot required. Tested with Android 4.

How to list all modules available in Android platform source tree?

make modules

Is it possible to write console Dalvik apps?

Yes, actually "am", "pm" and few other standard Android tools are actually such, and are run via shell wrapper: https://android.googlesource.com/platform/frameworks/base/+/gingerbread/cmds/am/

hello-world.html from platform/dalvik/docs/ explains how:

# Create file Foo.java
class Foo {
    public static void main(String[] args) {
        System.out.println("Hello, world");
    }
}
javac Foo.java
dx --dex --output=foo.jar Foo.class
adb push foo.jar /sdcard
adb shell dalvikvm -cp /sdcard/foo.jar Foo

I tried to flash a custom image to recovery partition (Android 4.x), however it doesn't boot and instead "red triangle of doom" is shown

Assuming the image is correct for your type of device and flashed into right place for it, known "feature" which causes this behavior is Android 4.x "recovery from boot". The idea is following: Recovery allows you to restore main Android install if something goes wrong. But what if recovery itself gets corrupted? Then if main image gets corrupted too, the device is bricked. So, main image and recovery were made to "watch after another". In particular, during boot of main image, recovery partition is checked, and if it doesn't contain "know good" image, it gets silently reflashed with copy of such image kept in main partition.

The backup of recovery image is commonly held in /system/recovery-from-boot.p . Actual boot-time checking and reflashing is handled by /system/etc/install-recovery.sh . Thus, to disable this behavior which gets into way of advanced Android usage, do following:

mv /system/recovery-from-boot.p /system/recovery-from-boot.p.old

or:

chmod 644 /system/etc/install-recovery.sh

Also, "red triangle of doom" is actually how a stock recovery of Android 4.x looks - while previous versions offered interactive means to investigate and fix your device, that's what to it was reduced in Android 4.x.

Based on: http://android.stackexchange.com/questions/18932/why-isnt-clockworkmod-recovery-sticking , http://androtab.info/clockworkmod/rockchip/install/

More Repositories

1

esp-open-sdk

Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips
Makefile
1,971
star
2

picotui

Lightweight, pure-Python Text User Interface (TUI) widget toolkit with minimal dependencies. Dedicated to the Pycopy project.
Python
808
star
3

pycopy

Pycopy - a minimalist and memory-efficient Python dialect. Good for desktop, cloud, constrained systems, microcontrollers, and just everything.
C
764
star
4

awesome-smarthome

Curated list of awesome SmartHome/Home Automation things (open and leaving users in control)
487
star
5

picoweb

Really minimal web application framework for the Pycopy project (minimalist Python dialect) and its "uasyncio" async framework
Python
474
star
6

ScratchABit

Easily retargetable and hackable interactive disassembler with IDAPython-compatible plugin API
Python
392
star
7

uzlib

Radically unbloated DEFLATE/zlib/gzip compression/decompression library. Can decompress any gzip/zlib data, and offers simplified compressor which produces gzip-compatible output, while requiring much less resources (and providing less compression ratio of course).
C
303
star
8

pycopy-lib

Standard library of the Pycopy project, minimalist and light-weight Python language implementation
Python
247
star
9

awesome-micropython

Curated list of awesome MicroPython resources
175
star
10

awesome-program-analysis

Program Analisys and Transformation survey and links (particular focus on SSA)
153
star
11

blutunode

Autonomous wireless sensor/actuator node using bluetooth modules based on CSR BlueCore chipset. See wiki for more info.
C
149
star
12

foreign-dlopen

Small library allowing to use dlopen() from statically-linked applications (where statically-linked executable vs loaded shared library may use completely different libc's)
C
143
star
13

ssabook

Mirror of InriaForge SSABook repository: https://gforge.inria.fr/projects/ssabook/ (was scheduled for retirement at the end of 2020, was still online as of 2021-03, but then gone by 2021-09).
TeX
125
star
14

yaota8266

Yet another OTA solution for ESP8266, this time supporting large (>512KB) firmwares even on 1MB devices (repo is rebased)
C
119
star
15

ScratchABlock

Yet another crippled decompiler project
Python
103
star
16

awesome-python-compilers

Retrospective of Python compilation efforts
62
star
17

utemplate

Micro template engine in Python with low memory usage, designed for Pycopy, a minimalist Python dialect, but also compatible with other Pythons.
Python
60
star
18

graph-llvm-ir

Visualization of LLVM IR
Python
55
star
19

PeripheralTemplateLibrary

Cross-platform, cross-MCU C++ template library for microcontrollers and peripheral devices
C++
54
star
20

android-platform-headers

Collection of platform headers and link libs for all versions of Android. (repo is rebased, see wiki)
C
54
star
21

visited_places

Simple, static, local visited places map (aka travel map) using D3 and D3 Datamaps
HTML
49
star
22

re1.5

re1, the unbloated regexp engine by Russ Cox, elaborated to be useful for real-world applications
C
41
star
23

python-compiler.old

Python2 compiler package ported to Python3. Compiles Python AST (as produced by the "ast" module) to bytecode assembly and code objects.
Python
41
star
24

python-imphook

Simple and clear import hooks for Python - import anything as if it were a Python module
Python
36
star
25

optware-android

Optware setup script for Android devices. Not actively maintained any more. You may want to look at https://github.com/Entware-ng/Entware-ng/wiki/Install-on-Android
Shell
35
star
26

notes-pico

Flask Notes sample application ported to the Pycopy's picoweb web micro-framework
Python
35
star
27

ida-xtensa2

IDAPython plugin for Tensilica Xtensa (as seen in ESP8266), version 2
Python
34
star
28

cortex-uni-startup

Unified startup code and link scripts for Cortex-M microcontrollers
C
32
star
29

pyflate

Pure Python zlib/gzip/bzip2 decompessor/bitstream dumper, plus additional utilities
Python
28
star
30

berkeley-db-1.xx

Berkeley DB 1.85 with patches and fixes applied
C
24
star
31

awesome-implicit-data-structures

Awesome implicit data structures
23
star
32

xtensa-subjects

Xtensa CPU architecture (ESP8266) binaries for ScratchABit interactive disassembler
HTML
22
star
33

esp-open-lwip

Superseded by https://github.com/pfalcon/lwip-esp8266. Was: Untangled build of vendor ESP8266 lwIP library
C
22
star
34

pymsasid3

Pure-Python x86 disassembler, ported to modern Python, with bugfixes
Python
21
star
35

lwip-esp8266

Upstream lwIP with complete history and cleaned up ESP8266 patchset on top
C
18
star
36

idapython

Automatically exported from code.google.com/p/idapython
Python
18
star
37

libperipha

Grand unified collection of headers to access various hardware chips and components
C
18
star
38

pyedit

Simple text editor widget for Python and Pycopy. Further developed in https://github.com/pfalcon/picotui
Python
18
star
39

squirrel-modules

General-purpose Squirrel language project. Includes collection of basic modules (including module loading infrastructure)
C++
17
star
40

pycopy-serial

pySerial-like interface for Pycopy (unix port)
Python
15
star
41

pyastinterp

Python AST interpreter (aka tree-walking interpreter) in Python. Aka meta-circular interpreter.
Python
15
star
42

opkg-static

Static self-contained opkg (the package manager) build for real-world embedded platforms like Android, Kindle, etc.
Shell
14
star
43

awesome-virtual-machines

Awesome Virtual Machines (VMs) and Language Runtimes (awesome from Computer Science perspective)
14
star
44

uorm

Sqlite3-based anti-ORM for Pycopy
Python
14
star
45

ctopy

Hacking on ESR's ctopy the C to Python conversion tool: http://www.catb.org/~esr/ctopy/
Python
14
star
46

papersman

Minimalist electronic documents/papers/publications manager/indexer/categorizer
Python
14
star
47

android-native

Android native (command-line) examples, utils and tools. See Wiki for more info.
C++
13
star
48

uart-bitbang

UART protocol for MCU using GPIO bitbang. Rate-adaptive and requires only clock counter to operate.
C
13
star
49

beap

Beap (bi-parental heap) algorithm reference implementation in Python
Python
13
star
50

esp-docs

Helping Espressif Systems, Inc. achieve 12-year product longevity (mirror of ESP8266, etc. documentation)
12
star
51

pycopy-projs

Various Pycopy-related proofs of concepts and hacks which don't deserve dedicated repos
Python
11
star
52

canterbury-corpus

The Canterbury compression corpus as a git repository
HTML
10
star
53

ullvm_c

Lightweight LLVM C API bindings for Pycopy and other Python implementations
Python
10
star
54

apps2org

Label/tag based application organizer and launcher for Android, fork of https://code.google.com/p/appsorganizer
Java
10
star
55

aes256_128

Code size efficient AES256/AES128 implementation
C
10
star
56

pycopy-jitgen

Generating machine code at runtime (aka JIT) using Pycopy (small Python dialect)
Python
10
star
57

uremi

Proof of concept of developing alike of https://github.com/dddomodossola/remi for Pycopy
Python
9
star
58

ppxml2db

Scripts to import PortfolioPerformance (https://github.com/portfolio-performance/portfolio) XML into a SQLite DB and export back
Python
9
star
59

sphinx_selective_exclude

Sphinx extension (plugin) to make ".only::" directive work like you expect. (Plus some other goodies for selective indexes.) [Unmaintained, may no longer work with latest Sphinx versions.]
Python
9
star
60

esp8266-re-wiki-mirror

Mirror of http://esp8266-re.foogod.com/wiki/
8
star
61

pycopy-filedb

Simple file-based ORM for Pycopy
Python
8
star
62

Chsmartbulb-led-bulb-speaker

Hacking "Chsmartbulb" BT/BLE LED bulb speaker
Python
8
star
63

llvm-codegen-py

(Machine) code generation experiments in Python, roughly centered around LLVM IR
Python
7
star
64

pymapfile

Python module to parse GNU ld/gcc map files
Python
7
star
65

arduino-hosted

Arduino Hosted Python module, allows to rapid-prototype simple Arduino microcontroller applications on desktop computer. Unlike many other Python wrappers, this provides syntax as close as possible to Arduino.
Python
7
star
66

pycopy-btreedb

Very simple ORM for Pycopy's btree module
Python
6
star
67

axtls

Pycopy fork of axTLS
C
6
star
68

pycopy-ffigen

FFI bindings generator for Pycopy
Python
6
star
69

simplejtag

Protocol and firmware to turn any low-cost board into JTAG/SWD adapater to use wiyh OpenOCD, PySWD, etc.
C++
6
star
70

picompile

Pico Compile, factored out "numpile" project, a small JIT compiler for Python with type inference
Python
6
star
71

android-depends

Tool to analyze Android module dependencies. Forked from http://code.google.com/p/rxwen-blog-stuff/source/browse/trunk/tools/
Python
6
star
72

awesome-python-projects

List of Python projects which either do something non-trivial, or are unbloated and lightweight. (See wiki)
6
star
73

parcopy

Implementation (in Python) of algorithm(s) for sequentializing of parallel copy
Python
6
star
74

udownmark

A dead simple parser/renderer for Markdown-like text markup (subset of Markdown). Dedicated to Pycopy, a minimalist Python implementation (https://github.com/pfalcon/micropython).
Python
5
star
75

change-control-manifesto

Change Control Manifesto for principled Open Source projects
5
star
76

esp-sdk-tools

Tools for hacking on Espressif ESP8266/ESP32 SDKs
Shell
4
star
77

py-runinpkg

Run Python scripts inside package directory as normal files, even if they use relative imports
Python
3
star
78

pseudoc-ir

Like LLVM, but simpler
Python
3
star
79

awesome-consumer-iot-hacks

A Collection of Hacks in Consumer IoT Space so that we can use those products (hopefully).
3
star
80

aygshell-win32

Implementation of WinCE AYGSHELL functions for pure Win32 API
C
3
star
81

ARM-CMSIS-BSD

BSD-licensed CMSIS core implementation from ARM, imported from CMSIS-SP-00300-r3p2-00rel1.zip
C
3
star
82

b43-tools

Mirror of git://git.bues.ch/b43-tools.git "Tools for the Broadcom 43xx series WLAN chip"
C
3
star
83

pycopy-uffmpeg

Pycopy bindings for FFmpeg
Python
3
star
84

cppmicroweb

Proof of concept C++ web micro framework for constrained devices inspired by Python microframeworks
C++
3
star
85

pycopy-dlman

Very simple download manager based on wget and Pycopy
Python
2
star
86

uaio_xiaomi_gw

Pycopy uasyncio module for Xiaomi Mi Home Gateway
Python
2
star
87

optware

Mirror of NSLU2 Optware + updates
C
2
star
88

openwrt-tools

Tools to automatically install/configure/manage OpenWRT
Shell
2
star
89

esp-open-headers

Headers for ESP8266 SDK internal functions and structures
C
2
star
90

awesome-stuff

Projects I'd like to record somewhere
2
star
91

dotfiles

Personal dotfiles
Shell
2
star
92

py-simple-serial

Very simple Python serial port module for Linux, roughly compatible with PySerial
Python
2
star
93

pycopy-libusb

libusb bindings for Pycopy
Python
2
star
94

b43-ucode

Mirror of git://git.bues.ch/b43-ucode.git "OpenSource firmware for Broadcom 43xx devices"
Assembly
2
star
95

meta-prefixdistro

OpenEmbedded layer for simlified distro rooted at atbitrary filesystem prefix
1
star
96

python-simple-mixin

Simple mixins for Python without multiple inheritance
Python
1
star
97

git-pynex

Proof of concept reimplementation of subset of git-annex in Python
Python
1
star
98

osmand-gpx-vis

Visualizing GPX tracks recorded by Osmand Android navigation software and other tools
Python
1
star
99

snapdragon410-mmio-gpio

Memory-mapped GPIO access on Snapdragon 410 SoC using MicroPython (and CPython)
Python
1
star
100

fdroidclient

Mirror (+local dev) of client app for F-Droid, FOSS Android package repository.
Java
1
star