A couple of scripts that will make the neufbox4 light from 1 to 6 white LEDs corresponding to the quality of the connection of an Internet key, when the front button is pressed.
=== LEDs library ===
This is a module with some simple functions to manage the LEDs. Save it as "**led.lua**" in a folder "**lib**".
module(..., package.seeall)
white_names = {"NB4-SER-r2:white:adsl", 
               "NB4-SER-r2:white:traffic",
               "NB4-SER-r2:white:tel",
               "NB4-SER-r2:white:tv",
               "NB4-SER-r2:white:wifi",
               "NB4-SER-r2:white:alarm"}
col_names = {"NB4-SER-r2:blue:service",
             "NB4-SER-r2:green:service",
             "NB4-SER-r2:red:service"}
function get_led(name)
  local f = io.open("/sys/class/leds/" ..  name .. "/brightness")
  local val = f:read()
  return val
end
function set_led(name, value)
  local f = io.open("/sys/class/leds/" ..  name .. "/brightness", "w")
  f:write(value)
  f:close()
end
function switch_led(name)
  set_led(name, 1-get_led(name))
end
function switch_all()
  for key, name in pairs(white_names) do
    switch_led(name)
  end
end
function anim()
  for key, name in pairs(white_names) do
    switch_led(name)
    os.execute("sleep " .. 1)
  end
  
  for key, name in pairs(col_names) do    
    switch_led(name)                      
    os.execute("sleep " .. 1)
  end 
  
  for key, name in pairs(col_names) do    
    switch_led(name)                      
    os.execute("sleep " .. 1)             
  end
end
function set_n_leds(n, value)
  -- Cohercion:
  nn = 0 + n
  for key, name in pairs(white_names) do
    if nn >= key then
      set_led(name, value)
    else
      set_led(name, 1-value)
    end
  end
end
=== The signalometer ===
This script lights from 1 to 6 LEDs depending on the quality of the signal of the connection of an Internet key connected to the box. Save it as "**show_signal.lua**".
module(..., package.seeall)
require "lib.led"
DEVICE = "/dev/ttyACM1"
function act()
  lib.led.set_n_leds(5, 0)
  local pop = io.popen("comgt -d " .. DEVICE)
  
  -- Line 1
  out = pop:read()
  -- Line 2
  out = pop:read()
  -- Line 3
  out = pop:read()
  
  for p in string.gmatch(out, '([^,]+)') do
    -- The last is the desired one
    connection = p
  end
  -- Line 4
  out = pop:read()
  
  for p in string.gmatch(out, "%S+") do
    -- The last is the desired one
    quality = p
  end
  
  quality = string.gsub(quality, ",", ".")
  
  -- The scale for connection should be
  -- (http://www.shapeshifter.se/2008/04/30/list-of-at-commands/):
  --
  --  0. GSM
  --  1. Compact GSM
  --  2. UTRAN
  --  3. GSM with EGPRS
  --  4. UTRAN with HSDPA
  --  5. UTRAN with HSUPA
  --  6. UTRAN with HSDPA and HSUPA
  --  
  --  while the scale for quality should be from 1 to 31, with
  --  
  --  0  -113 dBm or less
  --  1 -111 dBm
  --  2 to 30 -109 to -53 dBm
  --  31 -51 dBm or greater
  --  99  not known or not detectable
  
  -- however, gcom does not return the true connection type for my
  -- K3806-Z, so I will just use the signal strenght indicator:
  val = 6 * (quality / 31)
  lib.led.set_n_leds(val, 1)
  os.execute("sleep " .. 2)
  lib.led.set_n_leds(0, 1)
end
=== Dispatcher script ===
This script is called on any button event. It does nothing if the button was //pressed// but only if it was //released// - to avoid actions being executed twice. If the front button was released, it calls the above script.
#! /usr/bin/lua
-- Referred from "/etc/hotplug.d/button/etc/hotplug.d/button/buttons"
-- (http://wiki.openwrt.org/doc/howto/hardware.button)
print("button.lua running")
if os.getenv('ACTION') == "pressed" then os.exit() end
if os.getenv('BUTTON') == "BTN_1" then
  print("OK, go")
  require "show_signal"
  show_signal.act()
end
=== Hotplug configuration file ===
Save this as "**/etc/hotplug.d/button/button**" (and edit "**/etc/hotplug2.rules**" as suggested in [[http://wiki.openwrt.org/doc/techref/hotplug|this page]], under "Configuration"):
#!/bin/sh
logger $BUTTON
logger $ACTION
cd /root/scripts
logger `./button.lua`
(replace "**/root/scripts**" with the dir where the previous files were saved)