InfernoEmbedded(3)

πŸ“¦
version 3.2_p4 Β· 2 versions
, in alpine 3.24, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable

πŸ’– InfernoEmbedded πŸ’–

okay bestie, sit DOWN, because this is InfernoEmbedded(3) β€” a section 3 page from the One-Wire File System manual, and it's giving softdevices ✨. RGBW controllers, switch masters, and a whole firmware updater, all in one page. no cap.


🌸 NAME 🌸

InfernoEmbedded Softdevices β€” RGBW Controllers, Switch Masters, and a Firmware Updater, all living their best life πŸŽ€


✨ SYNOPSIS ✨

these are software-implemented devices, built on top of this repo right here:

https://github.com/InfernoEmbedded/onewire-softdevice

and the path shape is literally this:

ED [.]XXXXXXXXXXXX[XX][/[ device | version | status |
enter_firmware_update | address | crc8 | id | locator | r_address | r_id
| r_locator | type ]]

πŸ¦‹ FAMILY CODE πŸ¦‹

ED


πŸ’… GENERIC PROPERTIES πŸ’…

these apply to all Inferno Embedded softdevices, every single one, no exceptions 🫢

🌈 device

read-only, ascii text. it's the type of InfernoEmbedded Softdevice that got detected.

🌈 version

read-only, integer. the version number the device is reporting back to you.

🌈 status

read-only, integer. the 64 bit status register of the device.

🌈 enter_firmware_update

write-only, yes-no. write anything and the device reboots into the bootloader for a firmware update. πŸ’€

you can also force this with physical access to the device β€” short SWCLK to ground on the device's programming header while powering the device up. yes, actually.

πŸ”₯ FIRMWARE UPDATER PROPERTIES πŸ”₯

these ones only show up once the device has entered firmware update mode. main character energy only when the bootloader's out πŸ‘‘

⭐ firmware_bootloader_size

read-only, integer. the reserved size for the bootloader.

⭐ firmware_range

read-only, ascii text. the range of addresses available for the application, formatted as 0xNNNN-0xNNNN.

⭐ erase_firmware

write-only, yes-no. write anything to erase the current application and get the device ready to accept new firmware. this is the "clean slate" moment 🧚

⭐ update_firmware

write-only, binary data. write the binary data for a firmware update right here to reprogram the device after erasing.

⭐ exit_firmware_update

write-only, yes-no. write anything to exit firmware update and start the application back up.


πŸŽ€ RGBW CONTROLLER PROPERTIES πŸŽ€

these controllers control a bunch of channels of RGBW lights. pretty. obsessed. πŸ’–

πŸ’œ rgbw_all_off

write-only, yes-no. write anything to turn off all the channels.

πŸ’œ rgbw_channels

read-only, integer. the number of RGBW channels this device supports.

πŸ’œ rgbw_channelNN

read-write, ascii text. sets the current value of channel NN, formatted like:

RRR,GGG,BBB,WWW,nnn

where:

  • RRR,GGG,BBB,WWW is the red, green, blue values respectively (0-255)
  • nnn is the time to fade from the current colour to the new one, in milliseconds (0-16M). on read, this is the time remaining for the current fade to complete.

🌟 SWITCH MASTERS 🌟

these devices have a bunch of indicator LEDs, switch inputs, and relay outputs. each are grouped into ports of a certain number of channels. very organized of them, honestly πŸ’…

πŸ“ switch_ports

read-only, integer. the number of switch ports available.

πŸ“ switch_channels

read-only, integer. the number of channels available per switch port.

πŸ“ switch_refresh_activations

write-only, yes-no. write anything here to update the values of all switch ports from the device.

πŸ“ switch_portN

read-only, ascii text. the last fetched state for the port β€” use switch_refresh_activations to fetch the state, bestie, it will NOT update itself. formatted as "channel0,channel1...channelN", where each channel is '0' or '1' depending on whether it is activated.

πŸ“ set_switch_type

write-only, ascii text. sets the type of switch connected to the device. format is "port,channel,type" where port and channel are integer IDs, and type is:

  • 0 Toggle switch to VCC with pull-downs enabled on the device
  • 1 Toggle switch to Gnd with pull-ups enabled on the device
  • 2 Momentary switch to VCC with pull-downs enabled on the device
  • 3 Momentary switch to Gnd with pull-ups enabled on the device

πŸ“ led_ports

read-only, integer. the number of LED ports available.

πŸ“ led_channels

read-only, integer. the number of channels available per LED port.

πŸ“ led_portN

read-write, ascii text. the state for the port. formatted as "channel0,channel1...channelN", where each channel is '0' or '1' depending on whether the LED is lit.

πŸ“ relay_ports

read-only, integer. the number of relay ports available.

πŸ“ relay_channels

read-only, integer. the number of channels available per relay port.

πŸ“ relay_portN

read-write, ascii text. the state for the port. formatted as "channel0,channel1...channelN", where each channel is '0' or '1' depending on whether the relay is activated.

πŸ“ relay_modeN

read-write, ascii text. the mode for each relay on the port. formatted as "channel0,channel1...channelN", where each channel is one of the following modes:

  • 0 Channel operates independently
  • 1 Channel operates as a member of an even/odd pair

if the channels are operated as pairs, the even numbered relay is activated when the even numbered channel is turned on, and the odd numbered relay is activated when the even numbered channel is turned off. the odd numbered channel has no effect.

this is useful when controlling devices such as roller shutters, projector screens and air conditioning dampers, which require one relay to be activated to open, and another to close. ✨ (so real, so practical)

πŸ“ relay_timeoutN

read-write, ascii text. the timeout for each relay on the port. formatted as "channel0,channel1...channelN", where each channel is an integer (0-255) representing the number of seconds the relay will remain activated when operating as an even/odd pair.


🌈 ADDRESSING 🌈

every 1-wire device gets a unique 64-bit address assigned at the factory. it looks like this:

  • Family Code β€” 8 bits
  • Address β€” 48 bits
  • CRC β€” 8 bits

addressing under OWFS is in hexadecimal, of the form:

01.123456789ABC

where 01 is an example 8-bit family code, and 12345678ABC is an example 48 bit address.

the dot is optional, and the CRC code can be included. if it's included, it must be correct β€” no vibes-based CRC checking allowed πŸ’€


πŸ‘‘ SEE ALSO πŸ‘‘

🧚 Programs

owfs (1) owhttpd (1) owftpd (1) owserver (1) owdir (1) owread (1) owwrite (1) owpresent (1) owtap (1)

🧚 Configuration and testing

owfs (5) owtap (1) owmon (1)

🧚 Language bindings

owtcl (3) owperl (3) owcapi (3)

🧚 Clocks

DS1427 (3) DS1904 (3) DS1994 (3) DS2404 (3) DS2404S (3) DS2415 (3) DS2417 (3)

🧚 ID

DS2401 (3) DS2411 (3) DS1990A (3)

🧚 Memory

DS1982 (3) DS1985 (3) DS1986 (3) DS1991 (3) DS1992 (3) DS1993 (3) DS1995 (3) DS1996 (3) DS2430A (3) DS2431 (3) DS2433 (3) DS2502 (3) DS2506 (3) DS28E04 (3) DS28EC20 (3)

🧚 Switches

DS2405 (3) DS2406 (3) DS2408 (3) DS2409 (3) DS2413 (3) DS28EA00 (3) InfernoEmbedded (3)

🧚 Temperature

DS1822 (3) DS1825 (3) DS1820 (3) DS18B20 (3) DS18S20 (3) DS1920 (3) DS1921 (3) DS1821 (3) DS28EA00 (3) DS28E04 (3) EDS0064 (3) EDS0065 (3) EDS0066 (3) EDS0067 (3) EDS0068 (3) EDS0071 (3) EDS0072 (3) MAX31826 (3)

🧚 Humidity

DS1922 (3) DS2438 (3) EDS0065 (3) EDS0068 (3)

🧚 Voltage

DS2450 (3)

🧚 Resistance

DS2890 (3)

🧚 Multifunction (current, voltage, temperature)

DS2436 (3) DS2437 (3) DS2438 (3) DS2751 (3) DS2755 (3) DS2756 (3) DS2760 (3) DS2770 (3) DS2780 (3) DS2781 (3) DS2788 (3) DS2784 (3)

🧚 Counter

DS2423 (3)

🧚 LCD Screen

LCD (3) DS2408 (3)

🧚 Crypto

DS1977 (3)

🧚 Pressure

DS2406 (3) TAI8570 (3) EDS0066 (3) EDS0068 (3)

🧚 Moisture

EEEF (3) DS2438 (3)


🌈 AVAILABILITY 🌈

https://github.com/InfernoEmbedded/onewire-softdevice

πŸ’– AUTHOR πŸ’–

Alastair D'Silva (alastair@d-silva.org)


and that's the whole page, bestie 🫢 this was the OWFS Manpage, dated 2018, for InfernoEmbedded(3) β€” go forth and talk to your softdevices, you've got this πŸ’…βœ¨