<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software &#8211; Bohica.net</title>
	<atom:link href="https://web-dev.bohica.net/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>https://web-dev.bohica.net</link>
	<description>A place for all things of interest to the Bohica Community.</description>
	<lastBuildDate>Sun, 02 Aug 2026 21:35:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>FreePBX Toll-Free Dial Patterns</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/freepbx-toll-free-dial-patterns/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/freepbx-toll-free-dial-patterns/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Sun, 02 Aug 2026 21:30:31 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<category><![CDATA[Captcha]]></category>
		<category><![CDATA[Dynamic Route]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[route]]></category>
		<category><![CDATA[Toll-Call]]></category>
		<category><![CDATA[VoIP]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/?p=1184</guid>

					<description><![CDATA[This guide demonstrates how to use the Dynamic Routes module in FreePBX (specifically versions 16 and 17) to create a sequential &#8220;traffic cop&#8221; system. It will inspect the Caller ID [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">This guide demonstrates how to use the <strong>Dynamic Routes</strong> module in FreePBX (specifically versions 16 and 17) to create a sequential &#8220;traffic cop&#8221; system. It will inspect the Caller ID of an incoming call on a specific DID, intercept any anonymous, hidden, or restricted numbers, pass the remaining calls through a Toll-Free number check, and finally deliver regular callers to your standard destination—all while keeping your Inbound Routes GUI perfectly clean.</p>



<p class="wp-block-paragraph">If you want to cleanly route specific incoming caller IDs—such as capturing all toll-free numbers or blocking anonymous callers—without creating dozens of messy inbound routes, standard FreePBX pattern matching falls short. Because standard inbound routes use basic digit matching, trying to catch toll-free prefixes (like 800, 888, etc.) can accidentally misroute calls from geographic area codes (like 808 for Hawaii or 858 for California).</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p class="wp-block-paragraph">Before beginning, ensure your FreePBX system has the Dynamic Routes module installed.</p>



<ol class="wp-block-list">
<li>Navigate to <strong>Admin</strong> > <strong>Module Admin</strong>.</li>



<li>Check for <strong>Dynamic Routes</strong>. If it is not installed, download and install it.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Create the Anonymous Caller ID Filter</h2>



<p class="wp-block-paragraph">This first Dynamic Route will check if the incoming caller ID is blank, or if the SIP provider has replaced the number with words like &#8220;Anonymous,&#8221; &#8220;Restricted,&#8221; or &#8220;Private.&#8221;</p>



<ol class="wp-block-list">
<li>Navigate to <strong>Applications</strong> > <strong>Dynamic Routes</strong>.</li>



<li>Click <strong>Add</strong> and name the route (e.g., <code>Anonymous_CID_Check</code>).</li>



<li>Set the <strong>Source Type</strong> to <code>Asterisk Variable</code>.</li>



<li>In the <strong>Asterisk Variable</strong> field, enter the following regex string:</li>
</ol>



<pre class="wp-block-code"><code>${REGEX("^(&#91;Aa]nonymous|&#91;Uu]nknown|&#91;Rr]estricted|&#91;Pp]rivate|&#91;Hh]idden)?$" ${CALLERID(num)})}
</code></pre>



<ol start="5" class="wp-block-list">
<li>Scroll down to the <strong>Routing</strong> section at the bottom. Click to add a new match entry.</li>



<li>In the <strong>Match</strong> field, type exactly: <code>1</code></li>



<li>Set the <strong>Destination</strong> next to it to how you want to handle blocked callers (e.g., <em>Terminate Call > Hangup</em>, or an IVR explaining you don&#8217;t accept blocked numbers).</li>



<li>Set the <strong>Default Destination</strong> below that to <strong>Dynamic Routes</strong> > <code>TollFree_CID_Check</code> (we will create this in the next step).</li>



<li>Click <strong>Submit</strong>.</li>
</ol>



<figure class="wp-block-image size-full is-resized has-custom-border"><img fetchpriority="high" decoding="async" width="913" height="435" src="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.22.50-PM.png?x95514" alt="" class="wp-image-1188" style="border-width:1px;width:632px;height:auto" srcset="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.22.50-PM.png 913w, https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.22.50-PM-300x143.png 300w, https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.22.50-PM-768x366.png 768w" sizes="(max-width: 913px) 100vw, 913px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>How it works:</strong> The Asterisk <code>REGEX()</code> function evaluates the caller ID. If it matches common hidden caller ID terms (ignoring case sensitivity) or is completely blank, it outputs a <code>1</code> and routes the call to your termination destination. If it contains a real number, it outputs a <code>0</code> and falls through to the Default Destination.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Create the Toll-Free Caller ID Filter</h2>



<p class="wp-block-paragraph">This second Dynamic Route receives the calls that passed the first check and inspects them for North American toll-free area codes (800, 833, 844, 855, 866, 877, 888) across 10-digit, 11-digit, and E.164 (+1) formats.</p>



<ol class="wp-block-list">
<li>In <strong>Applications</strong> > <strong>Dynamic Routes</strong>, click <strong>Add</strong> to create another route.</li>



<li>Name it <code>TollFree_CID_Check</code>.</li>



<li>Set the <strong>Source Type</strong> to <code>Asterisk Variable</code>.</li>



<li>In the <strong>Asterisk Variable</strong> field, enter the following regex string:</li>
</ol>



<pre class="wp-block-code"><code>${REGEX("^&#91;+]?1?(800|833|844|855|866|877|888)" ${CALLERID(num)})}
</code></pre>



<ol start="5" class="wp-block-list">
<li>Scroll down to the <strong>Routing</strong> section and add a new match entry.</li>



<li>In the <strong>Match</strong> field, type exactly: <code>1</code></li>



<li>Set the <strong>Destination</strong> next to it to your special destination for Toll-Free callers.</li>



<li>Set the <strong>Default Destination</strong> below that to your standard inbound PBX destination (e.g., your main IVR, Ring Group, or Queue).</li>



<li>Click <strong>Submit</strong> and then <strong>Apply Config</strong>.</li>
</ol>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="896" height="417" src="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.25.46-PM.png?x95514" alt="" class="wp-image-1189" style="border-width:1px;width:630px" srcset="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.25.46-PM.png 896w, https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.25.46-PM-300x140.png 300w, https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.25.46-PM-768x357.png 768w" sizes="(max-width: 896px) 100vw, 896px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Link Your DID to the Front Door</h2>



<p class="wp-block-paragraph">Now that your filters are built and chained together, you simply need to point your specific incoming DID to the first step in the chain.</p>



<ol class="wp-block-list">
<li>Navigate to <strong>Connectivity</strong> > <strong>Inbound Routes</strong>.</li>



<li>Click <strong>Add Inbound Route</strong> (or edit your existing route for the desired DID).</li>



<li>In the <strong>DID Number</strong> field, enter your specific DID (e.g., <code>5874096407</code>).</li>
</ol>



<ul class="wp-block-list">
<li><em>Note: If your SIP provider requires a specific format, ensure it matches (e.g., <code>15874096407</code> or <code>+15874096407</code>). Do not use an underscore <code>_</code> unless you are actively using Asterisk pattern matching for a range of DIDs.</em></li>
</ul>



<ol start="4" class="wp-block-list">
<li>Leave the <strong>CallerID Number</strong> field blank.</li>



<li>Scroll to the bottom to the <strong>Set Destination</strong> section.</li>



<li>Choose <strong>Dynamic Routes</strong> and select <code>Anonymous_CID_Check</code>.</li>



<li>Click <strong>Submit</strong> and <strong>Apply Config</strong>.</li>
</ol>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="642" height="312" src="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.28.15-PM.png?x95514" alt="" class="wp-image-1190" style="border-width:1px;aspect-ratio:2.048458149779736;width:436px;height:auto" srcset="https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.28.15-PM.png 642w, https://web-dev.bohica.net/wp-content/uploads/2026/08/Screenshot-2026-08-02-at-3.28.15-PM-300x146.png 300w" sizes="(max-width: 642px) 100vw, 642px" /></figure>



<h3 class="wp-block-heading">The Final Call Flow</h3>



<p class="wp-block-paragraph">Your system now processes incoming calls on that DID with a highly efficient, automated gatekeeper:</p>



<ol class="wp-block-list">
<li><strong>The Inbound Route</strong> acts as the front door. It verifies the call is for your specific DID and hands it to the Anonymous route. (Calls to other DIDs bypass this logic entirely).</li>



<li><strong>The Anonymous Filter</strong> checks for blocked or blank numbers, hanging them up if matched, or passing them to the next step if they are legitimate numbers.</li>



<li><strong>The Toll-Free Filter</strong> checks the remaining calls for toll-free prefixes. Matches are sent to your special toll-free destination, while all standard geographic numbers drop safely into your normal PBX routing.</li>
</ol>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/freepbx-toll-free-dial-patterns/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Creating an Astra Child Theme</title>
		<link>https://web-dev.bohica.net/software/wordpress/creating-an-astra-child-theme/</link>
					<comments>https://web-dev.bohica.net/software/wordpress/creating-an-astra-child-theme/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Thu, 11 Nov 2021 00:16:28 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Astra]]></category>
		<category><![CDATA[child]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/?p=509</guid>

					<description><![CDATA[Why should I create a child theme? A child theme is a theme that is linked back to an original theme. This allows you to make changes to the theme [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Why should I create a child theme?</h3>



<p class="wp-block-paragraph">A child theme is a theme that is linked back to an original theme.  This allows you to make changes to the theme and it&#8217;s files (in the child) and your changes will not get erased when the main theme gets updated.  Any changed you put into the child will overwrite the main theme.  All your theme customization should be done in the child theme.</p>



<h3 class="wp-block-heading">Here is how to create an Astra Child Theme.</h3>



<p class="wp-block-paragraph">Astra provides a web tool to create a ready to go child theme.  You can even customize it and brand it to meet your needs.  Head on over to the <a href="https://wpastra.com/child-theme-generator/">Child Theme Generator </a>and follow these steps:</p>



<p class="wp-block-paragraph"><strong>1</strong> &#8211; Enter the name you wish to give your child theme.<br><strong>2 </strong>&#8211; Click on the Advanced Option (beside the Generate button) if you want to brand your child copy.  The advanced options will allow you to send the author, URL, description, and even add in your own screen shot.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://web-dev.bohica.net/wp-content/uploads/2021/11/Astre-Child-Theme-Generator.png?x95514" alt="" class="wp-image-510" style="width:542px;height:400px" width="542" height="400"/></figure>



<p class="wp-block-paragraph">3 &#8211; Once you have entered all the options, them select the Generate button and download the child theme (as a zip file) to your workstation.</p>



<h3 class="wp-block-heading">Installing the child theme.</h3>



<p class="wp-block-paragraph">1 &#8211; Log into your WordPress websites dashboard an navigate to Appearance -&gt; Themes -&gt; Add New</p>



<p class="wp-block-paragraph">2 &#8211; Click on the &#8220;Upload Theme&#8221; button (located in the upper left of the page), choose the child theme files you created, and click on &#8220;Install Now&#8221;.</p>



<p class="wp-block-paragraph">3 &#8211; Activate your child theme.  Everything should look the same (provided your had the parent theme active before).  NOTE: Do not remove the parent theme, they are linked and the child theme required the parent to work.</p>



<p class="wp-block-paragraph">Contrats.  You now have a child theme and it is active.  You can now go ahead and make any changes in the child theme you need and don&#8217;t have to work about your changes being erased every time you update the theme.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/wordpress/creating-an-astra-child-theme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Remove Category Description text in Astra theme</title>
		<link>https://web-dev.bohica.net/software/wordpress/remove-category-description-text-in-astra-theme/</link>
					<comments>https://web-dev.bohica.net/software/wordpress/remove-category-description-text-in-astra-theme/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Wed, 10 Nov 2021 20:18:13 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[Astra]]></category>
		<category><![CDATA[category]]></category>
		<category><![CDATA[description]]></category>
		<category><![CDATA[theme]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/?p=499</guid>

					<description><![CDATA[I am using the Astra theme on one of my WordPress sites. It is a great theme that allows you too customize a lot but I did run into one [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I am using the Astra theme on one of my WordPress sites.  It is a great theme that allows you too customize a lot but I did run into one issue.  I really didn&#8217;t want the category descriptions to show up when I display a category archive page.  If you are looking to remove the descriptions as well, then here is my easy fix.  You can fix this up with a filter hook in your theme so it will not display the text.</p>



<p class="wp-block-paragraph">Here is how to fix it up&#8230;.</p>



<p class="wp-block-paragraph">In the WordPress Dashboard, go to Appearances -&gt; Theme Editor and open the funtions.php file of your Astra theme.  Add the following code line to the bottom of the file.</p>



<pre class="wp-block-code"><code>add_filter( 'get_the_archive_description', '__return_null');</code></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/wordpress/remove-category-description-text-in-astra-theme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Moving WordPress&#8217; wp-cron to crontab</title>
		<link>https://web-dev.bohica.net/software/wordpress/moving-wordpress-wp-cron-to-crontab/</link>
					<comments>https://web-dev.bohica.net/software/wordpress/moving-wordpress-wp-cron-to-crontab/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Mon, 08 Nov 2021 22:15:52 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/?p=493</guid>

					<description><![CDATA[When I first started using WordPress I found it quite slow and I started to look into how to speed it up. What I found is that WordPress does a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When I first started using WordPress I found it quite slow and I started to look into how to speed it up.  What I found is that WordPress does a lot of house keeping every time a page is displayed.  One of these house keeping processes it to check to see if it needs to run any scheduled tasks by calling the wp-cron.php file.  This slows down your website as it is called every time someone goes to a page weather you have a scheduled task or not and it&#8217;s not even a good scheduler because if your site is not very busy, it may not even get called for a while.  </p>



<p class="wp-block-paragraph">WordPress does require scheduled tasks so wp-cron is needed.  We are not going to disable it completely, just make sure it gets called at a regular basis (improve the timing) and not at every page view (improve the speed). We will move this functionality over to the servers crontab system.  This does mean that you need admin access to the system that is hosting your WordPress.  If you are hosting it on a cloud provider, then you may not be able to make this change.</p>



<h3 class="wp-block-heading">Disable wp-cron from running at each page view.</h3>



<p class="wp-block-paragraph">You need to disable WordPress&#8217; default behaviour of calling wp-cron on each page view.  In your WordPress website, edit the file wp-config.php and add in the following line: </p>



<pre class="wp-block-preformatted">define('DISABLE_WP_CRON', true);</pre>



<h3 class="wp-block-heading">Add a crontab on your server</h3>



<p class="wp-block-paragraph">I use FreeBSD to host my WordPress instance.  Open a shell terminal and edit the file /etc/crontab.  Add the following line to the end:</p>



<pre class="wp-block-preformatted">*/10 * * * * /usr/bin/fetch -q https://example.com/wp-cron.php?doing_wp_cron -o - &gt; /dev/null 2&gt;&amp;1</pre>



<p class="wp-block-paragraph">Make sure to change example.com to the URL of your website.  The above line we automatically call the wp-cron function every 10 minutes.  You can change the */10 to */5 to make it run every 5 minutes if needed.  This will also get run even if you website get little to know traffic making the scheduler more accurate.</p>



<p class="wp-block-paragraph">This change is highly recommended for any site (if you have access to the servers crontab) but it critical if you have a high volume site.  This is probably one of the biggest changes you can do to speed up page loading for your visitors.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/wordpress/moving-wordpress-wp-cron-to-crontab/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Enabling an LCD Display.</title>
		<link>https://web-dev.bohica.net/software/rasplex/enabling-an-lcd-display/</link>
					<comments>https://web-dev.bohica.net/software/rasplex/enabling-an-lcd-display/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Sat, 23 Mar 2013 18:38:54 +0000</pubDate>
				<category><![CDATA[RasPlex]]></category>
		<category><![CDATA[16x2]]></category>
		<category><![CDATA[20x2]]></category>
		<category><![CDATA[20x4]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[HD44780]]></category>
		<category><![CDATA[LCD]]></category>
		<category><![CDATA[LCDd]]></category>
		<category><![CDATA[lcdproc]]></category>
		<category><![CDATA[plex]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[screen]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/raspberry-pi/rasplex-howto/enabling-an-lcd-display/</guid>

					<description><![CDATA[I recently purchased an LCD display for my Raspberry Pi and decided to get it working with RasPlex. &#160;The display is a 16&#215;2 HD44780 based LCD screen that I purchased [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><img loading="lazy" decoding="async" class=" alignright size-full wp-image-209" src="https://web-dev.bohica.net/wp-content/uploads/2013/03/LCD_Welcome.jpg?x95514" alt="Raspberry Pi LCD screen" style="margin: 3px 0px 3px 10px; float: right;" height="50" width="189" />I recently purchased an LCD display for my Raspberry Pi and decided to get it working with RasPlex. &nbsp;The display is a 16&#215;2 HD44780 based LCD screen that I purchased from<a href="http://www.mypishop.com/" target="_blank" rel="noopener"> MyPiShop</a>. There are a lot of different LCD screens floating around out there for the RaspBerry Pi and there doesn&#8217;t seem to be any type of standards. &nbsp;This how-to should work for most of the HP44780 displays that are connected directly to the GPIO connector.</p>
<p><span id="more-211"></span></p>
<p>&nbsp;</p>
<h3><strong>&nbsp;Step 1: Installing the right driver.</strong></h3>
<p style="text-align: justify;"><span style="line-height: 1.3em;">The latest version of Rasplex (I tested this on 0.1.30) doesn&#8217;t have the right driver for an LCD screen connected to the GPIO connector. &nbsp;The first thing to do is to download the modified driver. &nbsp;I have put a copy of the compliled driver on my system to make it easier to get.</span></p>
<p>Make the directory and copy the driver into it:&nbsp;</p>
<p class="code">mkdir -p /storage/lcdproc<br />
cd /storage/lcdproc<br />
wget <a href="../projects/hd44780.so">http://www.bohica.net/projects/hd44780.so<br />
c</a>hmod 644 hd44780.so</p>
<h3>&nbsp;</h3>
<h3>Step 2: Modify the configuration.</h3>
<p style="text-align: justify;">The configuration file for lcdproc needs to be changed to use the new driver. &nbsp;We can do this by coping the main system config over to the config directory and edit it there.</p>
<p style="text-align: justify;">Copy and edit the LCDd.conf confg file.</p>
<p class="code">cp /etc/LCDd.conf /storage/.config/LCDd.conf<br />
nano /storage/.config/LCDd.conf</p>
<p style="text-align: justify;">Look for the following variables in the file and change the lines to look like this:</p>
<p class="code">DriverPath=/stoage/lcdproc/<br />
Driver=hd44780<br />
ServerScreen=no<br />
TitleSpeed=2</p>
<p>Scroll down in the file until you find the <strong>[hd44780]</strong> driver section and change the connection type to use the Raspberry Pi</p>
<p class="code">ConnectionType=rpi</p>
<p>Right after the ConnectionType line inset the following lines: &nbsp;<em>NOTE: There is not a standard for what pins the LCD connects to on your GPIO. &nbsp;You will have to figure this out or contact the manufacturer. &nbsp;These numbers may be different for your display, make sure to add the correct ones for your display.</em></p>
<p class="code">D7=22<br />
D6=27<br />
D5=18<br />
D4=17<br />
RS=7<br />
EN=8</p>
<p>Look for the size lines and change it to match your display. &nbsp;My display is a 16 character wide with 2 lines display so mine looks like the following:</p>
<p class="code">Size=16&#215;2</p>
<p>Save and exit the LCDd.conf file.</p>
<h3>&nbsp;</h3>
<h3>Step 3: Tell Rasplex to use the LCD</h3>
<p style="text-align: justify;">Rasplex need to know about the LCD display. There are two places to configure it. &nbsp;The first place tells Rasplex what driver you are using and the second tells Rasplex to display information on the LCD.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class=" alignright size-full wp-image-210" src="https://web-dev.bohica.net/wp-content/uploads/2013/03/Pi_screen_1.jpg?x95514" alt="Raspberry Pi with LCD" style="margin: 5px; float: right;" height="126" width="216" />One the Rasplex menu, tell it what type of driver to use:</p>
<p><em>Preferences -&gt; Rasplex Settings -&gt; System</em><br />
<em>&nbsp; &nbsp;Make sure the LCD/VFD Driver is set to hd44780</em></p>
<p style="text-align: justify;">Next on the Rasplex menu, tell Rasplex to start using the LCD:</p>
<p><em>Preferences -&gt; System -&gt; Video Output</em><br />
<em>&nbsp; &nbsp;Enable LCD/VFD</em></p>
<p style="text-align: justify;">You can now restart your Rasplex and the LCD display should start working.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/rasplex/enabling-an-lcd-display/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configure VLAN&#8217;s in Trixbox</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/configure-vlans-in-trixbox/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/configure-vlans-in-trixbox/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Mon, 11 Oct 2010 22:33:50 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[eth0]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[Trixbox]]></category>
		<category><![CDATA[VLAN]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/asterisk-a-voip/asterisk-how-to/configure-vlans-in-trixbox/</guid>

					<description><![CDATA[My network in my house has a few VLAN&#8217;s to help devide the traffic up into logical segments.&#160; I have a Voice VLAN that is used for VoIP so I [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>My network in my house has a few VLAN&#8217;s to help devide the traffic up into logical segments.&nbsp; I have a Voice VLAN that is used for VoIP so I can&nbsp;apply QoS to the VoIP traffic. This&nbsp;makes sure that regular traffic doesn&#8217;t affect the telephone traffic.&nbsp; The VLAN ID I use for Voice is 20.&nbsp; You can pick any number for a VLAN ID from 2 to 4095 (Check your switch to see how many VLANs are supported).</p>
<p>Trixbox is build on CentOS (Red Hat based) so this howto will also apply to any Red Hat based Linux. Plase also not the following:</p>
<ul>
<li>Not all network drivers support VLANs but most do.</li>
<li>Do not use VLAN 1 as this is usually refered to as the &#8220;default&#8221; VLAN and is most likly already used.</li>
</ul>
<p>Your existing ethernet card configuration is stored in /etc/sysconfig/network-scripts/cfg-eth0.&nbsp; The easiest way to create a VLAN is just to copy that file (adding the VLAN ID onto the end of the name)&nbsp;and then edit it.</p>
<p class="code"># cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.20</p>
<p>Now edit the file your just created.</p>
<ol>
<li>Find the <strong>DEVICE=eth0</strong> variable and change it to <strong>DEVICE=eth0.20</strong></li>
<li>Append the&nbsp;variable <strong>VLAN=yes</strong> to the end of the file.</li>
<li>Change the <strong>IPADDR, NETMASK,</strong>&nbsp;and <strong>BROADCAST</strong> variables to&nbsp;what your require on the new VLAN.</li>
</ol>
<p>&nbsp;This is what my finished file looks like:</p>
<p class="code">DEVICE=eth0.20<br />BOOTPROTO=static<br />DHCPCLASS=<br />HWADDR=00:D0:87:BA:8E:B8<br />ONBOOT=yes<br />TYPE=Ethernet<br />IPADDR=192.75.200.10<br />NETMASK=255.255.255.0<br />BROADCAST=192.75.200.255<br />NETWORK=192.75.200.0<br />NOZEROCONF=yes<br />VLAN=yes</p>
<p>When you are done then restart the networking with the following command (or just reboot)</p>
<p class="code"># /etc/init.d/network restart</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/configure-vlans-in-trixbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Change sshd port in Trixbox</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/change-sshd-port-in-trixbox/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/change-sshd-port-in-trixbox/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Sun, 10 Oct 2010 19:50:19 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/asterisk-a-voip/asterisk-how-to/change-sshd-port-in-trixbox/</guid>

					<description><![CDATA[Recently there has been a number of attacks against the ssh port (TCP port 22). My version of ssh is currently patched up but it is still a pain to [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Recently there has been a number of attacks against the ssh port (TCP port 22). My version of ssh is currently patched up but it is still a pain to see hackers trying to run scripts against your ssh port over and over again. I have setup alerts that will warn me when some one tries to (or does) log into my systems. On some days I could get more than 1000 alerts that someone tried. Most of the attempts are from scripts that just try looking for the secure shell port and once they do, then they will try multiple attempts to get in.</p>
<p>The solution? Change the port. It&#8217;s not a fool proof method because some one just needs to scan your system looking for the ssh port, but does help to reduce the attempts by stopping some one just looking for port 22. If they have to search for your ssh port, then they may just move on to another system instead.</p>
<p>How to do it!</p>
<p>Trixbox is running on CentOS Linux. The config file for sshd is /etc/ssh/sshd_config. It is possable to set the default startup port here but I don&#8217;t like that solution. I prefer to change the port as a command line option when sshd starts up that way you can see the port that it is listening on when your view the processes. ( ps -aef ) The way to change the startup port for sshd is in the /etc/sysconfig/sshd file. This file is not there by default in Trixbox and will need to be created. It only needs one like in it setting the OPTIONS variable as follows:</p>
<p># cat /etc/sysconfig/sshd</p>
<p>OPTIONS=&#8221;-p 222&#8243;</p>
<p>Once the file is created, then restart the sshd daemon with the following command:</p>
<p># service sshd restart</p>
<p>Once it is restarted, your sshd service will now be answering on the new port ( port 222 in this example ).</p>
<p>Remember to modify your clients to connect up using the new port.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/change-sshd-port-in-trixbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Multiple Extensions with a Common Mailbox</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/multiple-extensions-with-a-common-mailbox/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/multiple-extensions-with-a-common-mailbox/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Thu, 03 Dec 2009 01:18:28 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[mailbox]]></category>
		<category><![CDATA[Trixbox]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/asterisk-a-voip/asterisk-how-to/multiple-extensions-with-a-common-mailbox/</guid>

					<description><![CDATA[Create all the extensions on the trixbox as your normally would and create mailboxes for each of them.&#160; It doesn&#8217;t care what you set for each mailbox as we will [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Create all the extensions on the trixbox as your normally would and create mailboxes for each of them.&nbsp; It doesn&#8217;t care what you set for each mailbox as we will be pointing them all at the common box.&nbsp; For this example we will use mailboxes 300, 301, 302, and 303.&nbsp; Decide on what mailbox will be the common one.&nbsp; I am going to use mailbox 300 for the common one.</p>
<p style="text-align: justify;">Now log into the trixbox and change to the /var/spool/asterisk/voicemail directory.&nbsp; You will see two subdirectories, default and device.&nbsp; Change to the default directory. Here you should see one directory for each mailbox that was created.&nbsp; The mailboxes do not get created until they get used. If you do not yet see one for 300 then this is because it has not been used yet.&nbsp; If it is not there, then just phone that extension and leave a voicemail message.&nbsp; If the other boxes 301, 302, and 303 are there, then you can remove them with the following commands:</p>
<p class="code">rm -rf 301<br />rm -rf 302<br />rm -rf 303</p>
<p style="text-align: justify;">The next thing to do is create a symlink so that the extensions 301,302, and 303 all point to the master mailbox of 300.</p>
<p class="code">ln -s 300 301<br />ln -s 300 302<br />ln -s 300 303</p>
<p style="text-align: justify;">Make sure the owners on the symlinked mailbox are the same as the master mailbox. They should be owned by asterisk.</p>
<p class="code">chown asterisk:asterisk 301<br />chown asterisk:asterisk 302<br />chown asterisk:asterisk 303</p>
<p style="text-align: justify;">next change to the /var/spool/asterisk/voicemail/device and make sure that the symlinks are created.&nbsp; If they are not, then manually create them as follows.</p>
<p class="code">ln -s 300 301<br />ln -s 300 302<br />ln -s 300 303</p>
<p>You should now be able to have any of the extensions go into the common mailbox.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/multiple-extensions-with-a-common-mailbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Music on Hold not working</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/music-on-hold-not-working/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/music-on-hold-not-working/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Sun, 16 Mar 2008 17:01:09 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[hold]]></category>
		<category><![CDATA[MOH]]></category>
		<category><![CDATA[mohmp3]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[music on hold]]></category>
		<category><![CDATA[Trixbox]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/asterisk-a-voip/asterisk-how-to/music-on-hold-not-working/</guid>

					<description><![CDATA[I installed trixbox CE 2.6.0 and noticed that the misic on hold was not working. If you go into the webGUI and click on the Music on Hold module it [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I installed trixbox CE 2.6.0 and noticed that the misic on hold was not working. If you go into the webGUI and click on the Music on Hold module it displays a number of file errors that is is not able to open the directory /var/lib/asterisk/mohmp3.&nbsp; The directory is missing in the distribution.&nbsp;</p>



<p class="wp-block-paragraph">Here is what I did to fix it:</p>



<p class="wp-block-paragraph">Secure shell into the trixbox and run the following two commands.</p>



<pre class="wp-block-code"><code><span class="code"># cd /var/lib/asterisk
# ln -s moh mohmp3</span></code></pre>



<p class="wp-block-paragraph">Log into the webGUI and click on the Music on Hold module and there shouldn&#8217;t be any errors. Then select System =&gt; System Maint. Click on the Reset Now button.</p>



<p class="wp-block-paragraph">Test an extension.&nbsp; The Music on Hold should now work.</p>



<p class="wp-block-paragraph">NOTE: I understand this is now fixed in the latest version of trixbox (v 2.6.0.2)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/music-on-hold-not-working/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Enable Video Support</title>
		<link>https://web-dev.bohica.net/software/asterisk-voip/enable-video-support/</link>
					<comments>https://web-dev.bohica.net/software/asterisk-voip/enable-video-support/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Davis]]></dc:creator>
		<pubDate>Sun, 16 Mar 2008 13:28:21 +0000</pubDate>
				<category><![CDATA[Asterisk VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[h263]]></category>
		<category><![CDATA[h263p]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[softphone]]></category>
		<category><![CDATA[Trixbox]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[videosupport]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[X-Ten]]></category>
		<guid isPermaLink="false">https://web-dev.bohica.net/asterisk-a-voip/asterisk-how-to/enable-video-support/</guid>

					<description><![CDATA[I downloaded the X-Ten softphone and was suprised to find out that the video call did not work.&#160; When trying to enable the video it would turn on the &#8220;Sending [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I downloaded the X-Ten softphone and was suprised to find out that the video call did not work.&nbsp; When trying to enable the video it would turn on the &#8220;Sending video&#8221; message and then turn off again.&nbsp; Searching through the docs and some google searches revealed the problem.&nbsp; Video support is not turned on by default in the asterisk setup on trixbox.&nbsp;</p>



<p class="wp-block-paragraph">Here is the steps to enable video aupport. (I am running trixbox CE 2.6 and asterisk 1.4):</p>



<p class="wp-block-paragraph">Edit the following file<strong> /etc/asterisk/sip_general_custom.conf</strong> and add the following lines</p>



<pre class="wp-block-code"><code>videosupport=yes
allow=h264
allow=h263
allow-h263p</code></pre>



<p class="wp-block-paragraph">Then restart asterisk so that it reloads the config files.&nbsp; You should now have working video support.</p>



<p class="wp-block-paragraph"><strong>NOTE:</strong> X-Ten seems to have a bug in their code (or asterisk I&#8217;m not sure). When you start sending video, only the person that received the call will see both cemeras.&nbsp; The fix is to put the call on hold for a second and then back off hold, you should now be able to see the video on both sides.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://web-dev.bohica.net/software/asterisk-voip/enable-video-support/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 44/184 objects using APC
Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching 1/48 queries in 0.033 seconds using APC (Request-wide modification query)

Served from: web-dev.bohica.net @ 2026-11-09 07:40:25 by W3 Total Cache
-->