Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    LCDProc 0.5.4-dev

    Scheduled Pinned Locked Moved pfSense Packages
    587 Posts 68 Posters 602.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Topper727
      last edited by

      I have been trying to get the right setup to get my Pertelian x2040 to work

      : dmesg | grep usb
      usbus0: <ohci (generic)="" usb="" controller="">on ohci0
      usbus0: 12Mbps Full Speed USB v1.0
      ugen0.1: <(0x1166)> at usbus0
      uhub0: <(0x1166) OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
      Root mount waiting for: usbus0
      ugen0.2: <ftdi>at usbus0
      Root mount waiting for: usbus0
      uftdi0: <ft245r usb="" fifo="">on usbus0
      ugen0.2: <ftdi>at usbus0 (disconnected)
      ugen0.2: <ftdi>at usbus0
      uftdi0: <ft245r usb="" fifo="">on usbus0

      I am not sure where I go wrong.  I tried alot of things and searched the web for an answer.. Nothing clear yet.
      All I get is
      "php: lcdproc: Start client procedure. Error counter: (0)"
      "php: lcdproc: Failed to connect to LCDd process Operation timed out (60)"

      I would love to get this working. Any help would be so appreciated.  Even a direction in way of how to setup the LCDd.conf file would help.

      LCDd.conf.txt</ft245r></ftdi></ftdi></ft245r></ftdi></ohci>

      Dell 2950 g3 server
      Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
      Current: 2000 MHz, Max: 2667 MHz
      8 CPUs: 2 package(s) x 4 core(s)
      8152 MiB and 600meg 10k drive
      Pfsense 2.4 .. Hoping to get the phpvirtualbox going again.

      1 Reply Last reply Reply Quote 0
      • R
        Roots0
        last edited by

        I'm having trouble with my Matrix Orbital LK202-25 V1.12

        It seems to be setting some pixels to all black. And also always the first and last proceeded by a K: Have a look at the attached image:

        I also get this from systemlog:
        Apr 12 12:59:01 php: lcdproc: Start client procedure. Error counter: (0)
        Apr 12 12:59:00 LCDd: MtxOrb: unable to read device serial number
        Apr 12 12:59:00 LCDd: MtxOrb: unable to read device firmware revision
        Apr 12 12:59:00 LCDd: MtxOrb: unable to read device type

        phpfKgZkkAM.jpg
        phpfKgZkkAM.jpg_thumb

        Mobile Computer & Network Support Stockport, UK
        www.timotten.co.uk

        1 Reply Last reply Reply Quote 0
        • stephenw10S
          stephenw10 Netgate Administrator
          last edited by

          @Topper727:

          I would love to get this working. Any help would be so appreciated.  Even a direction in way of how to setup the LCDd.conf file would help.

          Are you using the package or just configuring LCDd.conf for testing purposes? Usually the package generates the lcdd.conf file automatically.

          FTDI is a usb to serial interface. To get this working you probably want to direct LCDd to use the usb connected serial port not the USB port directly.
          Look in /dev/ without the USB connected. Now connect the USB and look in /dev/ again. You should see some new serial devices have appeared. A 'U' in the name implies they are USB connected.
          Use serial port and whatever device appeared in the conf.

          Steve

          Edit: Actually there appears to be special support for that LCD in lcdproc 0.5. Set driver type to hd44780 and connection type to pertelian. Set the port to whatever new serial port you found. You will have to do this manually at the moment because the lcdproc-dev package only supports lcd2usb as a connection type currently. Also your setting will be overwritten at boot!  :-\

          1 Reply Last reply Reply Quote 0
          • M
            Macom2007
            last edited by

            @Macom2007:

            Any news / progress on the 4 Leds of the CFA635 ?

            I modified the lcdproc_client.php to work with the CFA635 (driver CFontzPacket) inclusive the 4 LEDs. I also changed the IPSec detection for the IPSec screen (it was not working in the current version).
            Led 1 : CPU usage
            Led 2 : Interface status
            Led 3 : IPSec status
            Led 4 : Gateway status

            Maybe someone can include this into the package ?

            
            /* $Id$ */
            /*
                    lcdproc_client.php
                    Copyright (C) 2007 Seth Mos <seth.mos@xs4all.nl>Copyright (C) 2012 Michele Di Maria <michele@nt2.it>All rights reserved.
            
                    Redistribution and use in source and binary forms, with or without
                    modification, are permitted provided that the following conditions are met:
            
                    1\. Redistributions of source code must retain the above copyright notice,
                       this list of conditions and the following disclaimer.
            
                    2\. Redistributions in binary form must reproduce the above copyright
                       notice, this list of conditions and the following disclaimer in the
                       documentation and/or other materials provided with the distribution.
            
                    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
                    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
                    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
                    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
                    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                    POSSIBILITY OF SUCH DAMAGE.
            */
            
            	/*   trick interface into running this.  we are only
            	 *   calling from useland so this is not a security issue 
            	 */
            	require_once("config.inc");
            	require_once("functions.inc");
            	require_once("interfaces.inc");
            	require_once("ipsec.inc");
            	require_once("/usr/local/pkg/lcdproc.inc");
            
            	function get_pfstate() {
            		global $config;
            		$matches = "";
            		if (isset($config['system']['maximumstates']) and $config['system']['maximumstates'] > 0)
            			$maxstates="/{$config['system']['maximumstates']}";
            		else
            			$maxstates="/". pfsense_default_state_size();
            
            		$curentries = `/sbin/pfctl -si |grep current`;
            		if (preg_match("/([0-9]+)/", $curentries, $matches)) {
            			$curentries = $matches[1];
            		}
            		return $curentries . $maxstates;
            	}
            
            	function disk_usage() {
            		$dfout = "";
            		exec("/bin/df -h | /usr/bin/grep -w '/' | /usr/bin/awk '{ print $5 }' | /usr/bin/cut -d '%' -f 1", $dfout);
            		$diskusage = trim($dfout[0]);
            
            		return $diskusage;
            	}
            
            	function mem_usage() {
            		$memory = "";
            		exec("/sbin/sysctl -n vm.stats.vm.v_page_count vm.stats.vm.v_inactive_count " .
            			"vm.stats.vm.v_cache_count vm.stats.vm.v_free_count", $memory);
            
            		$totalMem = $memory[0];
            		$availMem = $memory[1] + $memory[2] + $memory[3];
            		$usedMem = $totalMem - $availMem;
            		$memUsage = round(($usedMem * 100) / $totalMem, 0);
            
            		return $memUsage;
            	}
            
            	/* Calculates non-idle CPU time and returns as a percentage */
            	function cpu_usage() {
            		$duration = 250000;
            		$diff = array('user', 'nice', 'sys', 'intr', 'idle');
            		$cpuTicks = array_combine($diff, explode(" ", `/sbin/sysctl -n kern.cp_time`));
            		usleep($duration);
            		$cpuTicks2 = array_combine($diff, explode(" ", `/sbin/sysctl -n kern.cp_time`));
            
            		$totalStart = array_sum($cpuTicks);
            		$totalEnd = array_sum($cpuTicks2);
            
            		// Something wrapped ?!?!
            		if ($totalEnd <= $totalStart)
            			return 0;
            
            		// Calculate total cycles used
            		$totalUsed = ($totalEnd - $totalStart) - ($cpuTicks2['idle'] - $cpuTicks['idle']);
            
            		// Calculate the percentage used
            		$cpuUsage = floor(100 * ($totalUsed / ($totalEnd - $totalStart)));
            
            		return $cpuUsage;
            	}
            
            	function get_uptime_stats() {
            		exec("/usr/bin/uptime", $output, $ret);
            		$temp = explode(",", $output[0]);
            		if(stristr($output[0], "day")) {
            			$status = "$temp[0] $temp[1]";
            		} else {
            			$status = "$temp[0] ";
            		}
            		$status = trim(str_replace("  ", " ", $status));
            		$status = substr($status, strpos($status, "up ") + 3);		
            		return($status);
            	}
            
            	function get_loadavg_stats() {
            		exec("/usr/bin/uptime", $output, $ret);
            		if(stristr($output[0], "day")) {
            			$temp = explode(" ", $output[0]);
            			$status = "$temp[11] $temp[12] $temp[13]";
            		} else {
            			$temp = explode(" ", $output[0]);
            			$status = "$temp[10] $temp[11] $temp[12]";
            		}
            		return($status);
            	}
            
            	function get_mbuf_stats() {	
            		exec("netstat -mb | grep \"mbufs in use\" | awk '{ print $1 }' | cut -d\"/\" -f1", $mbufs_inuse);
            		exec("netstat -mb | grep \"mbufs in use\" | awk '{ print $1 }' | cut -d\"/\" -f3", $mbufs_total);
            		$status = "$mbufs_inuse[0] \/ $mbufs_total[0]";
            		return($status);
            	}
            
            	function get_version() {
            		global $g;
            		$version = @file_get_contents("/etc/version");
            		$version = trim($version);
            		return("{$g['product_name']} {$version}");
            	}	
            
            	function get_cpufrequency(){
            		$cpufreqs = "";
            		exec("/sbin/sysctl -n dev.cpu.0.freq_levels", $cpufreqs);
            		$cpufreqs = explode(" ", trim($cpufreqs[0]));
            		$maxfreq = explode("/", $cpufreqs[0]);
            		$maxfreq = $maxfreq[0];
            		$curfreq = "";
            		exec("/sbin/sysctl -n dev.cpu.0.freq", $curfreq);
            		$curfreq = trim($curfreq[0]);
            		$status = "$curfreq\/$maxfreq Mhz";
            		return($status);
            	}
            
            	function get_cpufrequency_perc(){
            		$cpufreqs = "";
            		exec("/sbin/sysctl -n dev.cpu.0.freq_levels", $cpufreqs);
            		$cpufreqs = explode(" ", trim($cpufreqs[0]));
            		$maxfreq = explode("/", $cpufreqs[0]);
            		$maxfreq = $maxfreq[0];
            		$curfreq = "";
            		exec("/sbin/sysctl -n dev.cpu.0.freq", $curfreq);
            		$curfreq = trim($curfreq[0]);
            		$status = $curfreq/$maxfreq * 100;
            		return($status);
            	}	
            
            	function get_interfaces_stats() {
            		global $g;
            		global $config;
            		$ifstatus = array();
            		$i = 0;
            		$ifdescrs = array('wan' => 'WAN', 'lan' => 'LAN');
            		for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) {
            			$ifdescrs['opt' . $j] = $config['interfaces']['opt' . $j]['descr'];
            		}
            		foreach ($ifdescrs as $ifdescr => $ifname){
            			$ifinfo = get_interface_info($ifdescr);
            			if($ifinfo['status'] == "up") {
            				$online = "Up";
            			} else {
            				$online = "Down";
            			}
            			if(!empty($ifinfo['ipaddr'])) {
            				$ip = htmlspecialchars($ifinfo['ipaddr']);
            			} else {
            				$ip = "-";
            			}
            			$ifstatus[] = htmlspecialchars($ifname) ." [$online]";
            		}
            		$status = " ". implode(", ", $ifstatus);
            		return($status);
            	}
            
            	function get_slbd_stats() {
            		global $g;
            		global $config;
            
            		if (!is_array($config['load_balancer']['lbpool'])) {
            			$config['load_balancer']['lbpool'] = array();
            		}
            		$a_pool = &$config['load_balancer']['lbpool'];
            
            		$slbd_logfile = "{$g['varlog_path']}/slbd.log";
            
            		$nentries = $config['syslog']['nentries'];
            		if (!$nentries)
            		        $nentries = 50;
            
            		$now = time();
            		$year = date("Y");
            		$pstatus = "";
            		$i = 0;
            		foreach ($a_pool as $vipent) {
            			$pstatus[] = "{$vipent['name']}";
            			if ($vipent['type'] == "gateway") {
            				$poolfile = "{$g['tmp_path']}/{$vipent['name']}.pool";
            				if(file_exists("$poolfile")) {
            					$poolstatus = file_get_contents("$poolfile");
            				} else {
            					continue;
            				}
            				foreach ((array) $vipent['servers'] as $server) {
            					$lastchange = "";
                                                    $svr = split("\|", $server);
            					$monitorip = $svr[1];
            					if(stristr($poolstatus, $monitorip)) {
            						$online = "Up";
            					} else {
            						$online = "Down";
            					}
            					$pstatus[] = strtoupper($svr[0]) ." [{$online}]";
            				}
            			} else {
            				$pstatus[] = "{$vipent['monitor']}";
            			}
            		}
            		if(count($a_pool) == 0) {
            			$pstatus[] = "Disabled";
            		}
            		$status = implode(", ", $pstatus);
            		return($status);
            	}
            
            	function get_carp_stats () {
            		global $g;
            		global $config;
            
            		if(is_array($config['virtualip']['vip'])) {
            		  	$carpint = 0;
            			$initcount = 0;
            			$mastercount = 0;
            			$backupcount = 0;
            			foreach($config['virtualip']['vip'] as $carp) {
            				if ($carp['mode'] != "carp") {
            					 continue;
            				}
            				$ipaddress = $carp['subnet'];
            				$password = $carp['password'];
            				$netmask = $carp['subnet_bits'];
            				$vhid = $carp['vhid'];
            				$advskew = $carp['advskew'];
            				$carp_int = find_carp_interface($ipaddress);
            				$status = get_carp_interface_status($carp_int);
            				switch($status) {
            					case "MASTER":
            						$mastercount++;
            						break;
            					case "BACKUP":
            						$backupcount++;
            						break;
            					case "INIT":
            						$initcount++;
            						break;
            				}
            			}
            			$status = "M/B/I {$mastercount}/{$backupcount}/{$initcount}";
            		} else {
            			$status = "CARP Disabled";
            		}
            		return($status);
            	}
            
            	function get_ipsec_tunnel_sad() {
            		/* query SAD */
            		if(file_exists("/usr/local/sbin/setkey"))
            			$fd = @popen("/usr/local/sbin/setkey -D", "r"); 
            		else
            			$fd = @popen("/sbin/setkey -D", "r"); 
            		$sad = array();
            		if ($fd) {
            			while (!feof($fd)) {
            				$line = chop(fgets($fd));
            				if (!$line)
            					continue;
            				if ($line == "No SAD entries.")
            					break;
            				if ($line[0] != "\t") {
            					if (is_array($cursa))
            						$sad[] = $cursa;
            						$cursa = array();
            					list($cursa['src'],$cursa['dst']) = explode(" ", $line);
            					$i = 0;
            				} else {
            					$linea = explode(" ", trim($line));
            					if ($i == 1) {
            						$cursa['proto'] = $linea[0];
            						$cursa['spi'] = substr($linea[2], strpos($linea[2], "x")+1, -1);
            					} else if ($i == 2) {
            							$cursa['ealgo'] = $linea[1];
            					} else if ($i == 3) {
            						$cursa['aalgo'] = $linea[1];
            					}
            				}
            			$i++;
            				}
            			if (is_array($cursa) && count($cursa))
            				$sad[] = $cursa;
            			pclose($fd);
            		}
            		return($sad);
            	}
            
            	function get_ipsec_tunnel_src($tunnel) {
            		global $g, $config, $sad;
            		$if = "WAN";
            		if ($tunnel['interface']) {
            			$if = $tunnel['interface'];
            			$realinterface = convert_friendly_interface_to_real_interface_name($if);
            			$interfaceip = find_interface_ip($realinterface);
            		}
            		return $interfaceip;
            	}
            
            	function output_ipsec_tunnel_status($tunnel) {
            		global $g, $config, $sad;
            		$if = "WAN";
            		$interfaceip = get_ipsec_tunnel_src($tunnel);
            		$foundsrc = false;
            		$founddst = false;
            
            		if(!is_array($sad)) {
            			/* we have no sad array, bail */
            			return(false);
            		}
            		foreach($sad as $sa) {
            			if($sa['src'] == $interfaceip) 
            				$foundsrc = true;
            			if($sa['dst'] == $tunnel['remote-gateway']) 
            				$founddst = true;
            		}
            		if($foundsrc && $founddst) { 
            			/* tunnel is up */
            			$iconfn = "pass";
            			return(true);
            		} else {
            			/* tunnel is down */
            			$iconfn = "reject";
            			return(false);
            		}
            	}
            
            	function get_ipsec_stats_old() {
            		global $g, $config, $sad;
            		$sad = array();
            		$sad = get_ipsec_tunnel_sad();
            
            		$activecounter = 0;
            		$inactivecounter = 0;
            
            		if($config['ipsec']['tunnel']) {
            			foreach ($config['ipsec']['tunnel'] as $tunnel){ 
            				$ipsecstatus = false;
            
            				$tun_disabled = "false";
            				$foundsrc = false;
            				$founddst = false; 
            
            				if (isset($tunnel['disabled'])) {
            					$tun_disabled = "true";
            					continue;
            				}		
            
            				if(output_ipsec_tunnel_status($tunnel)) {
            					/* tunnel is up */
            					$iconfn = "true";
            					$activecounter++;
            				} else {
            					/* tunnel is down */
            					$iconfn = "false";
            					$inactivecounter++;
            				}			
            			}
            		}
            
            		if (is_array($config['ipsec']['tunnel'])) {
            			$status = "Up/Down $activecounter/$inactivecounter";
            		} else {
            			$status = "Up/Down $activecounter/$inactivecounter";//"IPSEC Disabled";
            		}
            		return($status);
            	}
            
            	function get_ipsec_stats() {
            	global $config;
            	if (isset($config['ipsec']['phase1'])){
            		$spd = ipsec_dump_spd();
            		$sad = ipsec_dump_sad();
            
            		$activecounter = 0;
            		$inactivecounter = 0;
            
            		foreach ($config['ipsec']['phase2'] as $ph2ent){ 
            			ipsec_lookup_phase1($ph2ent,$ph1ent);
            			$ipsecstatus = false;
            
            			$tun_disabled = "false";
            			$foundsrc = false;
            			$founddst = false; 
            
            			if (isset($ph1ent['disabled']) || isset($ph2ent['disabled'])) {
            				$tun_disabled = "true";
            				continue;
            			}
            
            			if(ipsec_phase2_status($spd,$sad,$ph1ent,$ph2ent)) {
            				/* tunnel is up */
            				$iconfn = "true";
            				$activecounter++;
            			} else {
            				/* tunnel is down */
            				$iconfn = "false";
            				$inactivecounter++;
            			}
            		}
            	}
            	if (isset($config['ipsec']['phase1'])){
            		$status = "Up/Down $activecounter/$inactivecounter";
            	} else {
            		$status = "IPSEC Disabled";
            	}
            	return($status);
            	}
            
            	/* Define functions */
            	function send_lcd_commands($lcd, $lcd_cmds) {
            		if(!is_array($lcd_cmds) || (empty($lcd_cmds))) {
            			lcdproc_warn("Failed to interpret lcd commands");
            			return;
            		}
            		while (($cmd_output = fgets($lcd, 8000)) !== false) {
            			if(preg_match("/^huh?/", $cmd_output)) {
            				lcdproc_notice("LCDd output: \"$cmd_output\". Executed \"$lcd_cmd\"");
            			}
            		}
            		foreach($lcd_cmds as $lcd_cmd) {
            			if(! fwrite($lcd, "$lcd_cmd\n")) {
            				lcdproc_warn("Connection to LCDd process lost $errstr ($errno)");
            				$lcdproc_connect_errors++;
            				return false;
            			}
            		}
            		return true;
            	}
            
            	function get_lcdpanel_width(){
            		global $config;
            		$lcdproc_size_config = $config['installedpackages']['lcdproc']['config'][0];
            		if (is_null($lcdproc_size_config['size'])) {
            			return "16";
            		}
            		else
            		{
            			$dimensions = split("x", $lcdproc_size_config['size']);
            			return $dimensions[0];
            		}
            	}
            
            	function get_lcdpanel_height(){
            		global $config;
            		$lcdproc_size_config = $config['installedpackages']['lcdproc']['config'][0];
            		if (is_null($lcdproc_size_config['size'])) {
            			return "2";
            		}
            		else
            		{
            			$dimensions = split("x", $lcdproc_size_config['size']);
            			return $dimensions[1];
            		}
            	}	
            
            	function get_lcdpanel_refresh_frequency(){
            		global $config;
            		$lcdproc_size_config = $config['installedpackages']['lcdproc']['config'][0];
            		$value = $lcdproc_size_config['refresh_frequency'];
            		if (is_null($value)) {
            			return "5";
            		}	
            		else
            		{
            			return $value;
            		}
            	}
            	function outputled_enabled_CFontzPacket(){
            		global $config;
            		$lcdproc_config = $config['installedpackages']['lcdproc']['config'][0];
            		$value = $lcdproc_config['outputleds'];
            		if (is_null($value)) 
            			{return false;}	
            		else
            		{			
            			if ($value && $lcdproc_config['driver'] == "CFontzPacket")
            				{return true;}
            			else
            				{return false;}
            		}
            	}
            
            	function outputled_enabled_CFontz633(){
            		global $config;
            		$lcdproc_config = $config['installedpackages']['lcdproc']['config'][0];
            		$value = $lcdproc_config['outputleds'];
            		if (is_null($value)) 
            			{return false;}	
            		else
            		{			
            			if ($value && $lcdproc_config['driver'] == "CFontz633")
            				{return true;}
            			else
            				{return false;}
            		}
            	}
            
            	function outputled_carp () {
            		/* Returns the status of CARP for the box. 
            		Assumes ALL CARP status are the same for all the intefaces.
            			-1 = CARP Disabled
            			0  = CARP on Backup 
            			1  = CARP on Master */
            		global $g;
            		global $config;
            
            		if(is_array($config['virtualip']['vip'])) {
            		  	$carpint = 0;
            			foreach($config['virtualip']['vip'] as $carp) {
            				if ($carp['mode'] != "carp") {
            					 continue;
            				}
            				$carp_int = find_carp_interface($carp['subnet']);
            				$status = get_carp_interface_status($carp_int);
            				switch($status) {
            					case "MASTER":
            						return 1;
            						break;
            					case "BACKUP":
            						return 0;
            						break;
            				}
            			}			
            		} else {
            			return -1;
            		}		
            	}	
            
            	function outputled_ipsec () {
            		/* Returns the status of CARP for the box. 
            		Assumes ALL CARP status are the same for all the intefaces.
            			-1 = IPSec Disabled
            			0  = IPSecot least one Tunnel Error 
            			1  = IPSec all Tunnes up */
            		global $g;
            		global $config;
            
            	global $config;
            	if (isset($config['ipsec']['phase1'])){
            		$spd = ipsec_dump_spd();
            		$sad = ipsec_dump_sad();
            
            		$activecounter = 0;
            		$inactivecounter = 0;
            
            		foreach ($config['ipsec']['phase2'] as $ph2ent){ 
            			ipsec_lookup_phase1($ph2ent,$ph1ent);
            			$ipsecstatus = false;
            
            			$tun_disabled = "false";
            			$foundsrc = false;
            			$founddst = false; 
            
            			if (isset($ph1ent['disabled']) || isset($ph2ent['disabled'])) {
            				$tun_disabled = "true";
            				continue;
            			}
            
            			if(ipsec_phase2_status($spd,$sad,$ph1ent,$ph2ent)) {
            				/* tunnel is up */
            				$iconfn = "true";
            				$activecounter++;
            			} else {
            				/* tunnel is down */
            				$iconfn = "false";
            				$inactivecounter++;
            			}
            		}
            	}
            	if (isset($config['ipsec']['phase1'])){
            		if ($inactivecounter == 0)
            		{
            			return 1;
            		}
            		else
            		{
            			return 0;
            		}
            
            	} else {
            		return -1;
            	}
            	}	
            
            	function outputled_gateway() {
            		/* Returns the status of the gateways. 
            			-1 = No gateway defined
            			0  = At least 1 gateway down or with issues
            			1  = All gateway up  */
            		global $g;
            		global $config;
            		$gateways_status = array();
            		$gateways_status = return_gateways_status(true);
            		foreach ($a_gateways as $gname => $gateway)
            		{
            			if ($gateways_status[$gname]['status'] != "none")
            			{
            				return 0;
            			}
            		}
            		return 1;
            	}
            
            	function get_traffic_stats(&$in_data, &$out_data){
            		global $config;
            		global $traffic_last_ugmt, $traffic_last_ifin, $traffic_last_ifout;
            		$lcdproc_screen_config = $config['installedpackages']['lcdprocscreens']['config'][0];	
            		/* read the configured interface */
            		$ifnum = $lcdproc_screen_config['scr_traffic_interface'];
            		/* get the real interface name (code from ifstats.php)*/
            		$realif = get_real_interface($ifnum);
            		if(!$realif)
            			$realif = $ifnum; // Need for IPSec case interface.
            		/* get the interface stats (code from ifstats.php)*/
            		$ifinfo = pfSense_get_interface_stats($realif);
            		/* get the current time (code from ifstats.php)*/
            		$temp = gettimeofday();
            		$timing = (double)$temp["sec"] + (double)$temp["usec"] / 1000000.0;
            		/* calculate the traffic stats */
            		$deltatime = $timing - $traffic_last_ugmt;
            		$in_data = "IN:  " . formatSpeedBits(((double)$ifinfo['inbytes']-$traffic_last_ifin)/$deltatime);
            		$out_data = "OUT: " . formatSpeedBits(((double)$ifinfo['outbytes']-$traffic_last_ifout)/$deltatime);
            		$traffic_last_ugmt = $timing;
            		$traffic_last_ifin = (double)$ifinfo['inbytes'];
            		$traffic_last_ifout = (double)$ifinfo['outbytes'];
            	}
            
            	function formatSpeedBits($speed) {
            	  /* format speed in bits/sec, input: bytes/sec 
            	  Code from: graph.php ported to PHP*/	  
            	  if ($speed < 125000)
            		{return sprintf("%3d.1 Kbps", $speed / 125);}		
            	  if ($speed < 125000000)
            		{return sprintf("%3d.1 Mbps", $speed / 125000);}
            	  // else
            	  return sprintf("%3d.1 Gbps", $speed / 125000000);
            	}
            
            	function add_summary_declaration(&$lcd_cmds, $name) {
            		$lcdpanel_height = get_lcdpanel_height();
            		$lcdpanel_width = get_lcdpanel_width();
            		if ($lcdpanel_height >= "4")
            		{
            			$lcd_cmds[] = "widget_add $name title_summary string";					
            			$lcd_cmds[] = "widget_add $name text_summary string";
            			if ($lcdpanel_width > "16")
            				{$lcd_cmds[] = "widget_set $name title_summary 1 3 \"CPU MEM STATES FREQ\"";}
            			else
            				{$lcd_cmds[] = "widget_set $name title_summary 1 3 \"CPU MEM STATES\"";}			
            		}				
            	}
            
            	function add_summary_values(&$lcd_cmds, $name, $lcd_summary_data) {
            		if ($lcd_summary_data != "")
            		{
            			$lcd_cmds[] = "widget_set $name text_summary 1 4 \"{$lcd_summary_data}\"";
            		}
            	}
            
            	function build_interface($lcd) {
            		global $g;
            		global $config;
            		$lcdproc_screens_config = $config['installedpackages']['lcdprocscreens']['config'][0];		
            		$refresh_frequency = get_lcdpanel_refresh_frequency() * 8;
            
            		$lcd_cmds = array();
            		$lcd_cmds[] = "hello";
            		$lcd_cmds[] = "client_set name pfSense";
            
            		/* process screens to display */
            		if(is_array($lcdproc_screens_config)) {
            			foreach($lcdproc_screens_config as $name => $screen) {
            				if($screen == "on") {
            					switch($name) {
            						case "scr_version":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"Welcome to\"";							
            							break;					
            						case "scr_time":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ System Time\"";							
            							break;
            						case "scr_uptime":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ System Uptime\"";
            							break;
            						case "scr_hostname":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ System Name\"";
            							break;
            						case "scr_system":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ System Stats\"";
            							break;
            						case "scr_disk":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ Disk Use\"";
            							break;
            						case "scr_load":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ Load Averages\"";
            							break;
            						case "scr_states":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name"; 
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ Traffic States\"";
            							break;
            						case "scr_carp":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ CARP State\"";
            							break;
            						case "scr_ipsec":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ IPsec Tunnels\"";							
            							break;
            						case "scr_slbd":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ Load Balancer\"";
            							break;
            						case "scr_interfaces":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ Interfaces\"";
            							break;
            						case "scr_mbuf":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ MBuf Usage\"";
            							break;
            						case "scr_cpufrequency":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt scroller";
            							$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ CPU Frequency\"";
            							break;
            						case "scr_traffic":
            							$lcd_cmds[] = "screen_add $name";
            							$lcd_cmds[] = "screen_set $name heartbeat off";
            							$lcd_cmds[] = "screen_set $name name $name";
            							$lcd_cmds[] = "screen_set $name duration $refresh_frequency";
            							$lcd_cmds[] = "widget_add $name title_wdgt string";
            							$lcd_cmds[] = "widget_add $name text_wdgt string";
            							break;
            					}
            					add_summary_declaration($lcd_cmds, $name);
            				}
            			}
            		}
            		send_lcd_commands($lcd, $lcd_cmds);
            	}
            
            	function loop_status($lcd) {
            		global $g;
            		global $config;
            		global $lcdproc_connect_errors;
            		$lcdproc_screens_config = $config['installedpackages']['lcdprocscreens']['config'][0];
            		$lcdpanel_width = get_lcdpanel_width();
            		$lcdpanel_height = get_lcdpanel_height();
            		if(empty($g['product_name'])) {
            			$g['product_name'] = "pfSense";
            		}
            
            		$refresh_frequency = get_lcdpanel_refresh_frequency();
            		/* keep a counter to see how many times we can loop */
            		$i = 1;
            		while($i) {
            			/* prepare the summary data */
            			if ($lcdpanel_height >= "4") {
            				$summary_states = split("/",get_pfstate());
            				$lcd_summary_data = sprintf("%02d%% %02d%% %6d", cpu_usage(),  mem_usage(), $summary_states[0]);
            				if ($lcdpanel_width > "16") {
            					$lcd_summary_data = $lcd_summary_data . sprintf(" %3d%%", get_cpufrequency_perc());
            				}				
            			}
            			else {	
            				$lcd_summary_data = "";}
            
            			$lcd_cmds = array();
            
            			/* initializes the widget counter */
            			$widget_counter = 0;
            
            			/* controls the output leds */
            			if (outputled_enabled_CFontz633() | outputled_enabled_CFontzPacket())
            			{
            				$led_output_value = 0;
            				/* LED 1: CPU Usage */
            				if (cpu_usage() > 50)
            					{$led_output_value = $led_output_value + pow(2, 4);}
            				else
            					{$led_output_value = $led_output_value + pow(2, 0);}
            
            				/* LED 2: Interface status */
            				if (substr_count(get_interfaces_stats(), "Down") > 0 )
            					{$led_output_value = $led_output_value + pow(2, 5);}
            				else
            					{$led_output_value = $led_output_value + pow(2, 1);}
            				/* LED 3: IPSec status */
            				switch (outputled_ipsec ())
            				{
            					case -1:/* IPSec disabled */
            					case 0: /* IPSec at least one Tunnel with error */
            						{$led_output_value = $led_output_value + pow(2, 6);}
            					case 1: /* IPSec all Tunnel up */
            						{$led_output_value = $led_output_value + pow(2, 2);}
            				}
            				/* LED 4: Gateway status */
            				switch (outputled_gateway())
            				{
            					case -1:/* Gateways not configured */
            					case 0: /* Gateway down or with issues */
            						{$led_output_value = $led_output_value + pow(2, 7);}
            					case 1: /* All Gateways up */
            						{$led_output_value = $led_output_value + pow(2, 3);}
            				}				
            				/* Sends the command to the panel */
            				$lcd_cmds[] = "output {$led_output_value}";
            				//$lcd_cmds[] = "output {1111 1111}";
            
            			}
            
            			/* process screens to display */
            			foreach((array) $lcdproc_screens_config as $name => $screen) {
            				if($screen != "on") {
            					continue;
            				}
            				switch($name) {
            					case "scr_version":
            						$version = get_version();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$version}\"";
            						break;				
            					case "scr_time":
            						$time = date("n/j/Y H:i");
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$time}\"";
            						break;
            					case "scr_uptime":
            						$uptime = get_uptime_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$uptime}\"";
            						break;
            					case "scr_hostname":
            						exec("/bin/hostname", $output, $ret);
            						$hostname = $output[0];
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$hostname}\"";
            						break;
            					case "scr_system":
            						$processor = cpu_usage();
            						$memory = mem_usage();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"CPU {$processor}%, Mem {$memory}%\"";
            						break;
            					case "scr_disk":
            						$disk = disk_usage();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"Disk {$disk}%\"";
            						break;
            					case "scr_load":
            						$loadavg = get_loadavg_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$loadavg}\"";
            						break;
            					case "scr_states":
            						$states = get_pfstate();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"Cur/Max {$states}\"";
            						break;
            					case "scr_carp":
            						$carp = get_carp_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$carp}\"";
            						break;
            					case "scr_ipsec":
            						$ipsec = get_ipsec_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$ipsec}\"";
            						break;
            					case "scr_slbd":
            						$slbd = get_slbd_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$slbd}\"";
            						break;
            					case "scr_interfaces":
            						$interfaces = get_interfaces_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$interfaces}\"";
            						break;
            					case "scr_mbuf":
            						$mbufstats = get_mbuf_stats();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$mbufstats}\"";
            						break;
            					case "scr_cpufrequency":
            						$cpufreq = get_cpufrequency();
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 4 \"{$cpufreq}\"";
            						break;
            					case "scr_traffic":
            						get_traffic_stats($in_data, $out_data);
            						$lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"{$in_data}\"";
            						$lcd_cmds[] = "widget_set $name text_wdgt 1 2 \"{$out_data}\"";
            						break;					
            				}
            				if ($name != "scr_traffic_interface") {
            					$widget_counter++;
            					add_summary_values($lcd_cmds, $name, $lcd_summary_data);
            				}
            			}			
            			if (send_lcd_commands($lcd, $lcd_cmds)) {
            				$lcdproc_connect_errors = 0; // Reset the error counter
            			}
            			else {	//an error occurred
            				return;
            			}
            			if (($refresh_frequency * $widget_counter) > 5) {
            				sleep(5); 
            			}
            			else {
            				sleep($refresh_frequency * $widget_counter);
            			}
            			$i++;
            		}
            	}
            	/* Initialize the wan traffic counters */
            	$traffic_last_ugmt = 0;
            	$traffic_last_ifin = 0;
            	$traffic_last_ifout = 0;
            	/* Initialize the global error counter */
            	$lcdproc_connect_errors = 0;
            	$lcdproc_max_connect_errors = 3;
            	/* Connect to the LCDd port and interface with the LCD */
            	while ($lcdproc_connect_errors <= $lcdproc_max_connect_errors)
            	{
            		lcdproc_warn("Start client procedure. Error counter: ($lcdproc_connect_errors)");
            		sleep(1);	
            		$lcd = fsockopen(LCDPROC_HOST, LCDPROC_PORT, $errno, $errstr, 10);
            		stream_set_timeout($lcd, 0 , 25000); // Sets the socket timeout as 25ms
            		if (!$lcd) {
            			lcdproc_warn("Failed to connect to LCDd process $errstr ($errno)");
            			$lcdproc_connect_errors++;
            		} else {			
            			build_interface($lcd);
            			loop_status($lcd);
            			fclose($lcd);
            		}		
            	}
            	if ($lcdproc_connect_errors >= $lcdproc_max_connect_errors)
            	{
            		lcdproc_warn("Too many errors, the client ends.");
            	}
            ?></michele@nt2.it></seth.mos@xs4all.nl> 
            
            1 Reply Last reply Reply Quote 0
            • R
              Roots0
              last edited by

              Sorted out my display with thanks to Markus @ lcdproc.

              If the following settings could be added to the config page when the "MtxOrb" driver is selected for lcdproc it would be great for Matrix Orbital users:
              Type = { lcd | lkd | vfd | vkd }
              hasAdjustableBacklight = { yes | no }

              Mobile Computer & Network Support Stockport, UK
              www.timotten.co.uk

              1 Reply Last reply Reply Quote 0
              • T
                tix
                last edited by

                Is there any known issues getting LCDProc running on the nano versions?

                I converted my Firebox X700 to nano on CF instead of a HDD install and I cannot get the package to run correctly.  The package installer shows success but I cannot get the display operational and on boot I get the following error:

                
                 Starting package LCDproc-dev...
                Warning: fopen(/usr/local/etc/LCDd.conf): failed to open stream: Read-only file system in /usr/local/pkg/lcdproc.inc on line 43
                Bootup complete
                
                

                Line 43 is```
                $handle = fopen($file, 'w');

                
                I had this working perfectly on the full HDD version.
                1 Reply Last reply Reply Quote 0
                • stephenw10S
                  stephenw10 Netgate Administrator
                  last edited by

                  Hmm, that's odd.
                  The package system should take care of the filesystem.

                  What do you see from this command:

                  mount -p
                  

                  Steve

                  1 Reply Last reply Reply Quote 0
                  • T
                    tix
                    last edited by

                    This is the output

                     mount -p
                    /dev/ufs/pfsense0       /                       ufs     rw,sync,noatime        1 1
                    devfs                   /dev                    devfs   rw              0 0
                    /dev/md0                /tmp                    ufs     rw              2 2
                    /dev/md1                /var                    ufs     rw              2 2
                    /dev/ufs/cf             /cf                     ufs     rw,sync,noatime        1 1
                    devfs                   /var/dhcpd/dev          devfs   rw              0 0
                    

                    Forgot to mention that this is on 2.1-Dev  Everything else is working great including the OpenVPN Client Export package which is the only other package installed.

                    1 Reply Last reply Reply Quote 0
                    • P
                      palmfans
                      last edited by

                      mdima,

                      I have an iMonLCD (OEM type) and I found that it should be supported on 0.5.5 package on this document:
                      http://lcdproc.sourceforge.net/docs/lcdproc-0-5-5-user.html

                      However, after install the LCDProc 0.5.5 package, the support for iMon is missing.

                      Is there any way to bring it back?

                      1 Reply Last reply Reply Quote 0
                      • stephenw10S
                        stephenw10 Netgate Administrator
                        last edited by

                        @tix:

                        Forgot to mention that this is on 2.1-Dev

                        In that case it's untested and you're on your own.  ;) Interesting to note though.
                        However there's clearly something not right because your filesystem is mounted RW and it should be RO for Nano installs. I think I may have read something about that recently, check the 2.1 sub forum.

                        Steve

                        Edit: Did you test from the cli or using the Diag: Command: in the web gui?
                        @jimp:

                        Diag > Command does switch to rw. The shell does not.

                        1 Reply Last reply Reply Quote 0
                        • stephenw10S
                          stephenw10 Netgate Administrator
                          last edited by

                          @palmfans:

                          I have an iMonLCD (OEM type) and I found that it should be supported on 0.5.5 package

                          It appears that the iMon LCDproc driver requires a kernel module in order to work. The links provided in the document are all Linux based. If there isn't a FreeBSD module then it's very unlikely.  :(

                          Steve

                          Edit: There may be hope: http://aopopov.home.xs4all.nl/imon/imon.html

                          1 Reply Last reply Reply Quote 0
                          • C
                            Cino
                            last edited by

                            is there a way to get a temperature screen added?

                            wondering if the code that is used for the system information widget/functions.inc.php could be helpful

                            
                            function get_temp() {
                            //	switch(get_hwtype()) {
                            //		default:
                            //			return;
                            //	}
                            //
                            //	return $ret;
                            
                                     $temp_out = "";
                            	 exec("/sbin/sysctl dev.cpu.0.temperature | /usr/bin/awk '{ print $2 }' | /usr/bin/cut -d 'C' -f 1", $dfout);
                                     $temp_out = trim($dfout[0]);
                                     if ($temp_out == "") {
                                       exec("/sbin/sysctl hw.acpi.thermal.tz0.temperature | /usr/bin/awk '{ print $2 }' | /usr/bin/cut -d 'C' -f 1", $dfout);
                               	   $temp_out = trim($dfout[0]);
                                     }
                            
                            	 return $temp_out;
                            }
                            
                            

                            thanks in-advance!

                            1 Reply Last reply Reply Quote 0
                            • T
                              tix
                              last edited by

                              In that case it's untested and you're on your own.  ;) Interesting to note though.

                              I was afraid of that :)

                              However there's clearly something not right because your filesystem is mounted RW and it should be RO for Nano installs. I think I may have read something about that recently, check the 2.1 sub forum.

                              I thought so too, but being new to the nano version, I wasn't sure…

                              Edit: Did you test from the cli or using the Diag: Command: in the web gui?
                              @jimp:

                              Diag > Command does switch to rw. The shell does not.

                              CLI via SSH

                              I may end up grabbing the newest SNAP and starting over when I get a chance this weekend.  I have some 'other' 2.1-dev issues that seem to be resolved on a clean install of the newest SNAPs….

                              edit:  stephenw - you are right.  There seems to be some issues with CF cards 'hanging' and causing slow response, mine included.  http://forum.pfsense.org/index.php/topic,48256.0.html

                              1 Reply Last reply Reply Quote 0
                              • P
                                power_matz
                                last edited by

                                Hello,

                                I am running the latest version of the driver package installed with the web UI.

                                The LCDproc server stops after a while setting "thanks for using pfsense" in the display.
                                Restarting the server works but the the behaviour occures after a while.

                                I used the version (0.5.3 I think) without any problems.

                                Is there anyone who is interested in any logfiles (if so, which are of interest?).
                                If not, where can I get an older version of the package?

                                Matthias

                                1 Reply Last reply Reply Quote 0
                                • stephenw10S
                                  stephenw10 Netgate Administrator
                                  last edited by

                                  What LCD do you have? Which driver?
                                  Edit: I see you're using a firebox.
                                  I have seen this behaviour at start up but not during normal running. Does it coincide with an IP change or an interface going up or down, when packages are restarted?

                                  The old firebox lcd driver, which was 0.52 then 0.53, was not a pfSense package and as such it was only ever started once at boot. Currently there is an unresolved issue with the package being restarted multiple times during boot. This seems cause a problem with LCDd which cannot start/stop fast enough. On my box the daemon/client often ends up running incorrectly but after restarting manually it runs fine until I next reboot the box.

                                  Steve

                                  1 Reply Last reply Reply Quote 0
                                  • marcellocM
                                    marcelloc
                                    last edited by

                                    @stephenw10:

                                    Here's a suggestion, while reading through some other bootup scripts I found this:

                                    
                                    // Do not process while booting
                                    if($g['booting']) 
                                    	exit;
                                    

                                    Perhaps we could use this somehow to limit the number of reloads? Of course it could easily stop it loading at all.  ::)

                                    Steve

                                    Just some news about this function if still needed.

                                    I found a way to detect and prevent multiple starts during boot.
                                    here is the code I'm including on packages I'm maintaining

                                    	# detect boot process
                                    	if (is_array($_POST)){
                                    		if (preg_match("/\w+/",$_POST['__csrf_magic']))
                                    			unset($boot_process);
                                    		else
                                    			$boot_process="on";
                                    	}
                                    
                                    	if(is_process_running("NAME_OF_DAEMON_PROCESS_HERE") && isset($boot_process))
                                    		return;
                                    

                                    Treinamentos de Elite: http://sys-squad.com

                                    Help a community developer! ;D

                                    1 Reply Last reply Reply Quote 0
                                    • stephenw10S
                                      stephenw10 Netgate Administrator
                                      last edited by

                                      This looks good. I'll try and test it ASAP. Unfortunately my replacement X-Core has a dead backlight on the LCD.  ::)
                                      Hopefully I can combine my two boxes to make one reliable one.  :)

                                      Are you including this code in the rc file?

                                      Steve

                                      1 Reply Last reply Reply Quote 0
                                      • marcellocM
                                        marcelloc
                                        last edited by

                                        @stephenw10:

                                        Are you including this code in the rc file?

                                        No, it's on sync function at inc package file.

                                        on postfix.inc for example:

                                        function sync_package_postfix() {
                                        	global $config;
                                        
                                        	# detect boot process
                                        	if (is_array($_POST)){
                                        		if (preg_match("/\w+/",$_POST['__csrf_magic']))
                                        			unset($boot_process);
                                        		else
                                        			$boot_process="on";
                                        	}
                                        
                                        	if(is_process_running("master") && isset($boot_process))
                                        		return;
                                        
                                        	#check patch in /etc/inc/config.
                                        	$relay_domains = "";
                                        	$transport = "";
                                        .
                                        .
                                        .
                                        
                                        

                                        Treinamentos de Elite: http://sys-squad.com

                                        Help a community developer! ;D

                                        1 Reply Last reply Reply Quote 0
                                        • stephenw10S
                                          stephenw10 Netgate Administrator
                                          last edited by

                                          Still not working.  :(
                                          But it does correctly do something.

                                          
                                          May 7 18:24:10 	php: : Creating rrd update script
                                          May 7 18:24:11 	php: : Restarting/Starting all packages.
                                          May 7 18:24:11 	php: lcdproc: Sync: Begin package sync
                                          May 7 18:24:12 	php: lcdproc: Sync: End package sync
                                          May 7 18:24:12 	php: : Resyncing OpenVPN instances for interface WAN.
                                          May 7 18:24:12 	php: lcdproc: Sync: Begin package sync
                                          May 7 18:24:12 	php: lcdproc: Sync: End package sync
                                          May 7 18:24:12 	php: : Creating rrd update script
                                          May 7 18:24:12 	php: : The command '/usr/bin/killall 'ntpd'' returned exit code '1', the output was 'killall: warning: kill -TERM 58686: No such process'
                                          May 7 18:24:12 	dnsmasq[47718]: reading /etc/resolv.conf
                                          May 7 18:24:12 	dnsmasq[47718]: using nameserver 192.168.1.1#53
                                          May 7 18:24:12 	dnsmasq[47718]: ignoring nameserver 127.0.0.1 - local interface
                                          May 7 18:24:12 	dnsmasq[47718]: ignoring nameserver 127.0.0.1 - local interface
                                          May 7 18:24:13 	php: : OpenNTPD is starting up.
                                          May 7 18:24:13 	php: : pfSense package system has detected an ip change 0.0.0.0 -> ... Restarting packages.
                                          May 7 18:24:13 	check_reload_status: Starting packages
                                          May 7 18:24:14 	LCDd: LCDd version 0.5.5 starting
                                          May 7 18:24:14 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
                                          May 7 18:24:14 	LCDd: Listening for queries on 127.0.0.1:13666
                                          May 7 18:24:14 	php: : IPSEC: One or more IPsec tunnel endpoints has changed its IP. Refreshing.
                                          May 7 18:24:15 	php: lcdproc: Start client procedure. Error counter: (0)
                                          May 7 18:24:15 	login: login on console as root
                                          May 7 18:24:15 	sshlockout[53881]: sshlockout/webConfigurator v3.0 starting up
                                          May 7 18:24:16 	LCDd: Connect from host 127.0.0.1:26764 on socket 11
                                          May 7 18:24:16 	check_reload_status: Reloading filter
                                          May 7 18:24:18 	php: : Restarting/Starting all packages.
                                          May 7 18:24:18 	php: lcdproc: Sync: Still Booting!
                                          May 7 18:24:18 	php: lcdproc: Sync: Still Booting!
                                          May 7 18:24:21 	LCDd: Client on socket 11 disconnected
                                          May 7 18:24:21 	LCDd: sock_send: socket write error
                                          May 7 18:24:22 	LCDd: Server shutting down on SIGTERM
                                          May 7 18:24:23 	LCDd: LCDd version 0.5.5 starting
                                          May 7 18:24:23 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
                                          May 7 18:24:23 	LCDd: sock_create_inet_socket: cannot bind to port 13666 at address 127.0.0.1 - Address already in use
                                          May 7 18:24:23 	LCDd: sock_init: error creating socket - Address already in use
                                          May 7 18:24:23 	LCDd: Critical error while initializing, abort.
                                          May 7 18:24:23 	php: lcdproc: Start client procedure. Error counter: (0)
                                          May 7 18:24:34 	php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
                                          May 7 18:24:34 	php: lcdproc: Start client procedure. Error counter: (1)
                                          May 7 18:24:40 	php: /index.php: Successful webConfigurator login for user 'admin' from 192.168.1.111
                                          May 7 18:24:40 	php: /index.php: Successful webConfigurator login for user 'admin' from 192.168.1.111
                                          May 7 18:24:45 	php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
                                          May 7 18:24:45 	php: lcdproc: Start client procedure. Error counter: (2)
                                          May 7 18:24:56 	php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
                                          May 7 18:24:56 	php: lcdproc: Start client procedure. Error counter: (3)
                                          May 7 18:25:07 	apinger: Error while feeding rrdtool: Broken pipe
                                          May 7 18:25:07 	php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
                                          May 7 18:25:07 	php: lcdproc: Too many errors, the client ends.
                                          
                                          

                                          It's still hard to get a grip on why this is failing.
                                          The package is initially started and the LCDd daemon successfully connects to the client on socket 11. Then all packages are restarted. For some reason the LCDd instance fails to stop quickly and a new one tries to start but can't because port 13666 is in use. Then the first instance stops and the client times out.  :-\

                                          Steve

                                          1 Reply Last reply Reply Quote 0
                                          • marcellocM
                                            marcelloc
                                            last edited by

                                            Try this way:

                                            function sync_package_lcdproc_screens() {
                                            	# detect boot process
                                            		if (is_array($_POST)){
                                            			if (preg_match("/\w+/",$_POST['__csrf_magic']))
                                            				sync_package_lcdproc();
                                            			}
                                            
                                            	}
                                            
                                            	function sync_package_lcdproc() {
                                            		global $g;
                                            		global $config;
                                            		global $input_errors;		
                                            
                                            		# detect boot process
                                            		if (is_array($_POST)){
                                            			if (!preg_match("/\w+/",$_POST['__csrf_magic']))
                                            				return;
                                            			}
                                            
                                            		lcdproc_notice("Sync: Begin package sync");
                                            		config_lock();
                                            .
                                            .
                                            .
                                            
                                            

                                            Treinamentos de Elite: http://sys-squad.com

                                            Help a community developer! ;D

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.