Mac Address From Chip Id, Manual Optional Armbian

NodeMCU/Linux aims to target following hardware running a Debian-based Linux:

  • Raspberry Pi series (like Raspberry Pi 3, Raspberry Pi Zero) running Raspbian
  • Orange Pi series (like Orange Pi Zero, Orange Pi Lite, etc) running Armbian
  • NanoPi series (like NanoPi NEO, etc) running Armbian

detailed list of supported devices will be published as soon gpio and i2c modules are more complete and tested.

Insert your micro SD card imaged with Armbian into the micro SD slot on the Orange Pi Zero. (Optional) Connect your Orange Pi Zero using an Ethernet cable to your router. Connect three jumper cables between your USB-to-Serial converter and the Orange Pi Zero. Mac address-table static. Adds static entries to the MAC address table or configures a static MAC address with IGMP snooping disabled for that address. Show mac address-table aging-time. Displays information about the time-out values for the MAC address table. Show mac address-table count. Displays the number of entries currently in the MAC.

  • majority of the modules are meant to be implemented with Lua itself and external modules via luarocks
  • if hardware-near implementation is needed:
    • Lua 5.1 and luaffifb module https://github.com/facebookarchive/luaffifb
    • LuaNode has async IO infrastructure with ffi support (currently used)
    • LuaJIT FFI: http://luajit.org/ext_ffi.html interfacing C functions and structures (parses string to extract struct information) NOTE: currently luajit is disregarded, but lua5.1 is used
  • ...

Following modules are aimed to implement NodeMCU/Linux mainly based on the NodeMCU/ESP8266 API and partially on NodeMCU/ESP32 API:

adc

Functions (bold=implemented):

  • adc.force_init_mode() Checks and if necessary reconfigures the ADC mode setting in the ESP init data block.
  • adc.read() Samples the ADC.
  • adc.readvdd33() Reads the system voltage.

ads1115

adxl345

am2320

apa102

bit

State: built-in

Notes:

  • Lua 5.1: using bitop module
  • Lua 5.3: it's included https://www.lua.org/manual/5.3/manual.html#3.4.2

bme280

bmp085

coap

cron

Functions (bold=implemented):

  • cron.schedule() Creates a new schedule entry.
  • cron.reset() Removes all scheduled entries.
  • cron.entry:handler() Sets a new handler for entry.
  • cron.entry:schedule() Sets a new schedule mask.
  • cron.entry:unschedule() Disables schedule.

crypto

dht

ds18b20

encoder

enduser setup

file

State: most functionality implemented with io module, vastly untested

Functions (bold=implemented):

  • file.chdir() Change current directory (and drive).
  • file.exists() Determines whether the specified file exists.
  • file.format() Format the file system.
  • file.fscfg() Returns the flash address and physical size of the file system area, in bytes.
  • file.fsinfo() Return size information for the file system.
  • file.list() Lists all files in the file system.
  • file.mount() Mounts a FatFs volume on SD card.
  • file.on() Registers callback functions.
  • file.open() Opens a file for access, potentially creating it (for write modes).
  • file.remove() Remove a file from the file system.
  • file.rename() Renames a file.
  • file.stat() Get attribtues of a file or directory in a table.
  • file.close(), file.obj:close() Closes the open file, if any.
  • file.flush(), file.obj:flush() Flushes any pending writes to the file system, ensuring no data is lost on a restart.
  • file.read(), file.obj:read() Read content from the open file.
  • file.readline(), file.obj:readline() Read the next line from the open file.
  • file.seek(), file.obj:seek() Sets and gets the file position, measured from the beginning of the file, to the position given by offset plus a base specified by the string whence.
  • file.write(), file.obj:write() Write a string to the open file.
  • file.writeline(), file.obj:writeline() Write a string to the open file and append 'n' at the end.

gdbstub

gpio

State: partially implemented but entirely untested

Functions (bold=implemented):

  • gpio.mode() Initialize pin to GPIO mode, set the pin in/out direction, and optional internal weak pull-up.
  • gpio.read() Read digital GPIO pin value.
  • gpio.serout() Serialize output based on a sequence of delay-times in µs.
  • gpio.trig() Establish or clear a callback function to run on interrupt for a pin.
  • gpio.write() Set digital GPIO pin value.

Notes:

  • https://github.com/Tieske/rpi-gpio assumes Raspberry Pi
  • https://github.com/bitbank2/ArmbianIO Armbian (NanoPi, Orange Pi, but not Raspberry Pi)

hdc1080

hmc5883l

http

State: partial implemented but not functional (requires net module to work)

Functions (bold=implemented):

  • http.delete() Executes a HTTP DELETE request.
  • http.get() Executes a HTTP GET request.
  • http.post() Executes a HTTP POST request.
  • http.put() Executes a HTTP PUT request.
  • http.request() Execute a custom HTTP request for any HTTP method.

Notes:

  • partial Lua implementation exists at https://github.com/Spiritdude/nodemcu-shell/blob/master/lib/http.lua (depends on net module)

hx711

i2c

Mac address from chip id manual optional ambien without

State: basic incomplete and untested skeleton

Notes:

l3g4200d

math

Status: built-in

Notes:

  • ESP8266: not available (yet)
  • ESP32: experimentally available
  • Linux: built-in

mcp4725

mdns

mqtt

net

Notes:

Functions (bold=implemented):

  • net.createConnection() Creates a client.
    • net.socket:close() Closes socket.
    • net.socket:getpeer() Retrieve port and ip of remote peer.
    • net.socket:getaddr() Retrieve local port and ip of socket.
    • net.socket:hold() Throttle data reception by placing a request to block the TCP receive function.
    • net.socket:on() Register callback functions for specific events.
      • connection
      • receive
      • close
      • sent
    • net.socket:send() Sends data to remote peer.
    • net.socket:connect() Connect to a remote server.
    • net.socket:ttl() Changes or retrieves Time-To-Live value on socket.
    • net.socket:unhold() Unblock TCP receiving data by revocation of a preceding hold().
  • net.createServer() Creates a server.
    • net.server:close() Closes the server.
    • net.server:getaddr() Returns server local address/port.
    • net.server:listen() Listen on port from IP address.
      • net.socket:dns() Provides DNS resolution for a hostname.
      • net.socket:getpeer() Retrieve port and ip of remote peer.
      • net.socket:getaddr() Retrieve local port and ip of socket.
      • net.socket:hold() Throttle data reception by placing a request to block the TCP receive function.
      • net.socket:on() Register callback functions for specific events.
        • connection
        • receive
        • sent
      • net.socket:send() Sends data to remote peer.
      • net.socket:ttl() Changes or retrieves Time-To-Live value on socket.
      • net.socket:unhold() Unblock TCP receiving data by revocation of a preceding hold().
  • net.createUDPSocket() Creates an UDP socket.
  • net.multicastJoin() Join multicast group.
  • net.multicastLeave() Leave multicast group.
    • net.udpsocket:close() Closes UDP socket.
    • net.udpsocket:listen() Listen on port from IP address.
    • net.udpsocket:on() Register callback functions for specific events.
    • net.udpsocket:send() Sends data to specific remote peer.
    • net.udpsocket:dns() Provides DNS resolution for a hostname.
    • net.udpsocket:getaddr() Retrieve local port and ip of socket.
    • net.udpsocket:ttl() Changes or retrieves Time-To-Live value on socket.
  • net.dns.getdnsserver() Gets the IP address of the DNS server used to resolve hostnames.
  • net.dns.resolve() Resolve a hostname to an IP address.
  • net.dns.setdnsserver() Sets the IP of the DNS server used to resolve hostnames.

node

State: partially implemented, but untested

Functions (bold=implemented):

  • node.bootreason() Returns the boot reason and extended reset info.
  • node.chipid() Returns the ESP chip ID.
  • node.compile() Compiles a Lua text file into Lua bytecode, and saves it as .
  • node.dsleep() Enters deep sleep mode, wakes up when timed out.
  • node.flashid() Returns the flash chip ID.
  • node.flashsize() Returns the flash chip size in bytes.
  • node.heap() Returns the current available heap size in bytes.
  • node.info() Returns NodeMCU version (major,minor,dev), chipid, flashid, flash size, flash mode, flash speed, architecture (new: 'esp8266', 'esp32', or 'linux')
  • node.input() Submits a string to the Lua interpreter.
  • node.output() Redirects the Lua interpreter output to a callback function.
  • node.restart() Restarts the chip/device, Hint: nodemcu must be run as root (e.g. via sudo nodemcu)
  • node.restore()
  • node.setcpufreq() Change the working CPU Frequency [MHz], loose setting (e.g. choosing next possible valid frequency out of a table)
  • node.sleep() Put NodeMCU in light sleep mode to reduce current consumption.
  • node.stripdebug() Controls the amount of debug information kept during node.
  • node.osprint() Controls whether the debugging output from the SDK is printed.
  • node.random() This behaves like math.
  • node.egc.setmode() Sets the Emergency Garbage Collector mode.
  • node.task.post() Enable a Lua callback or task to post another task request.

ow (1-Wire)

pcm

perf

pwm

rc

rfswitch

rotary

rtcfifo

rtcmem

rtctime

State: partially implemented, but untested

Functions (bold=implemented):

  • rtctime.dsleep() Puts the device into deep sleep mode, like node.
  • rtctime.dsleep_aligned() For applications where it is necessary to take samples with high regularity, this function is useful.
  • rtctime.epoch2cal() Converts a Unix timestamp to calendar format.
  • rtctime.get() Returns the current time.
  • rtctime.set() Sets the rtctime to a given timestamp in the Unix epoch (i.

Notes:

  • Lua implementation exists at https://github.com/Spiritdude/nodemcu-shell/blob/master/lib/rtctime.lua

si7021

sigma delta

sjson

Status: partially implemented

Functions (bold=implemented):

  • sjson.encoder() This creates an encoder object that can convert a LUA object into a JSON encoded string.
  • sjson.encoder:read() This gets a chunk of JSON encoded data.
  • sjson.encode() Encode a Lua table to a JSON string.
  • sjson.decoder() This makes a decoder object that can parse a JSON encoded string into a lua object.
  • sjson.decoder:write() This provides more data to be parsed into the lua object.
  • sjson.decoder:result() This gets the decoded lua object, or raises an error if the decode is not yet complete.
  • sjson.decode() Decode a JSON string to a Lua table.

Notes:

  • lunajson (currently used)

sntp

  • sntp.sync() Attempts to obtain time synchronization.
  • sntp.setoffset() Sets the offset between the rtc clock and the NTP time.
  • sntp.getoffset() Gets the offset between the rtc clock and the NTP time.

somfy

spi

Notes:

struct

State: built-in

Functions (bold=implemented):

  • struct.pack()
  • struct.unpack()

Notes:

  • Using https://github.com/iryont/lua-struct or

switec

tcs34725

tls

tm1829

tmr

State: most functionality implement, functional since luanode is used as Lua framework:

Functions (bold=implemented):

  • tmr.now() Returns the system counter, which counts in microseconds.
  • tmr.time() Returns the system uptime, in seconds (integer)
  • tmr.uptime() (new) Returns the system uptime in seconds with microsecond precision (float)
  • tmr.create() Creates a dynamic timer object.
    • tmr:alarm() This is a convenience function combining tmr.
    • tmr:interval() Changes a registered timer's expiry interval.
    • tmr:register() Configures a timer and registers the callback function to call on expiry.
    • tmr:resume() Resume an individual timer.
    • tmr:start() Starts or restarts a previously configured timer.
    • tmr:state() Checks the state of a timer.
    • tmr:stop() Stops a running timer, but does not unregister it.
    • tmr:suspend() Suspend an armed timer.
    • tmr:unregister() Stops the timer (if running) and unregisters the associated callback.
  • tmr.resume_all() Resume all timers.
  • tmr.suspend_all() Suspend all currently armed timers.
  • tmr.softwd() Provides a simple software watchdog, which needs to be re-armed or disabled before it expires, or the system will be restarted.
  • tmr.wdclr() Feed the system watchdog.

tsl2561

u8g / u8g2

u8g(2) is a pretty self-contained library except it asks for a I2C communication interface:

  • either implement it per board/chipset (cumbersome) or
  • call Lua layer i2c abstraction and be hardware independent
  • utilize https://github.com/prpplague/Userspace-Arduino
  • utilize https://github.com/me-no-dev/RasPiArduino

uart

Notes:

ucg

websocket

Notes:

wifi

Functions (bold=implemented):

based on NodeMCU/ESP32 wifi API:

  • wifi.getchannel() Gets the current WiFi channel.
  • wifi.getmode() Gets WiFi operation mode.
  • wifi.mode() Configures the WiFi mode to use.
  • wifi.start() Starts the WiFi interface(s).
  • wifi.stop() Shuts down the WiFi interface(s).
  • wifi.sta.config() Sets the WiFi station configuration.
  • wifi.sta.connect() Connects to the configured AP in station mode.
  • wifi.sta.disconnect() Disconnects from AP in station mode.
  • wifi.sta.on() Registers callbacks for WiFi station status events.
  • wifi.sta.getmac() Gets MAC address in station mode.
  • wifi.sta.scan() Scan for available networks.
  • wifi.ap.config() Configures the AP.
  • wifi.ap.on() Registers callbacks for WiFi AP events.
  • wifi.ap.getmac() Gets MAC address in access point mode.

and a few from ESP8266 wifi API:

  • wifi.sta.gethostname()
  • wifi.sta.sethostname()
  • wifi.sta.status()
  • wifi.sta.getmac()

wps

ws2801

ws2812

xpt2046

Active1 month ago

I'm using Mint 15 w/ Cinnamon.

I bought a set of bluetooth speakers and I'm trying to connect to them via terminal. Via the GUI I can see them normally and I am connected to them. I want to make a small script so every time they are visible I would connect to them automatically.

I am trying to scan them with:

hcitool scan

But I get

Scanning...

and after a few seconds the process dies.

The same thing with hidd --search.

Mac Address From Chip Id Manual Optional Armbian Tool

If I run hciconfig scan I get:

I suppose that is just saying my bluetooth address and that it is turned on.

As I said already, via the normal User Interface, I can see the speakers and I am connected to them, but through terminal I get nothing.

Actually it is quite funny that hcitool scan isn't finding anything since my speakers are connected and every time I run the command the sound from the speakers breaks for a couple of seconds.

Jeff Schaller
49.2k11 gold badges72 silver badges163 bronze badges
ZippieZippie
6942 gold badges7 silver badges12 bronze badges

6 Answers

I managed to do so via bluez-tools:

sudo apt-get install bluez-tools

List of devices to get the MAC address of my device:

bt-device -l

and successfully connect to it:

bt-audio -c 01:02:03:04:05:06

Keep in mind that the bt-audio feature is being reimplemented for newer versions.

k0pernikus
4,78716 gold badges46 silver badges67 bronze badges
Zippie

Mac Address From Chip Id Manual Optional Armbian Pdf

Zippie
6942 gold badges7 silver badges12 bronze badges

I did to sudo apt-get install bluez-tools, because I did use it at some point.

After being able to find the device from hcitool scan,I ran bluez-simple-agent hci0 X where X is the mac address of the device I was adding. This created the connection to the device.

Then I ran hciconfig scan and it seems to have automatically started the connection.

Community
user62474user62474

I know this is kinda late but I was playing with this command hcitool and I'd like to point out something that I noted which solves your issue of doing a scan and the process 'just dying'. The thing is the scan only works if the devices are unpaired. In your case, you say you can see the speakers are connected on the GUI which means they've already been paired...hence the scan returns nothing.

I'm working on how to pair/connect devices with the same tool although I can see you've been given other options. I'll update my answer as soon as I manage.

KipchirchirIanKipchirchirIan

To do it with the built-in utils, you can follow this slightly more manual process using bluetoothctl.

Mac Address From Chip Id Manual Optional Armbian 2017

The posts in this Github issue suggest a way to script it, but that did not work for me since I needed to manually wait for the scan to yield results.

MaxMax

I have the following installed in Debian 9.

I have already paired my Bluetooth headphones to a USB Bluetooth adapter on my desktop using the GUI application Bluetooth Manager. I have a keyboard shortcut that runs the following two commands: bt-device -c 00:02:5B:01:3C:3B; pacmd set-default-sink bluez_sink.00_02_5B_01_3C_3B.a2dp_sink

  1. Connect headphones to the Bluetooth USB adapter. (Use bt-device -l to get the MAC address.)
  2. Set Bluetooth audio as the default output. (Use pacmd list-sinks | awk '/index:/ {print $0}; /name:/ {print $0}; /device.description/ {print $0}' to get the correct name.)
jbrockjbrock

This might be a bit late, but I had the exact same problem, with the same output from hciconfig.

However, sudo hcitool lescan did the job for me - maybe it can still help you!

Mac Address From Chip Id Manual Optional Armbian Download

Jeff Schaller
49.2k11 gold badges72 silver badges163 bronze badges

Mac Address From Chip Id Manual Optional Ambien Without

unihornunihorn

Not the answer you're looking for? Browse other questions tagged command-lineterminallinux-mintbluetooth or ask your own question.