Windows 10 on the Acer Aspire X3990

I have a couple of older PCs that I use on my electronics workbench; an Acer Aspire X3990 and an Acer Aspire X3995 both running Windows 10 version 1607 (originally they ran Windows 7 Home Premium, upgraded in-place to Windows 10).

Any attempt to upgrade these systems to a newer Windows 10 fails; the screen just goes black and the system hangs. No diagnostics whatsoever. After many frustrating attempts I decided to do a “clean” install.

I extracted the Product Key from the running OS using the free ProduKey utility. Then, I downloaded the Windows 10 Home installation media and created a bootable USB stick.

This time, the installer threw an error before hanging: “clock watchdog timeout”. Google finally came up with a few relevant links (tenforums.com and hardforum.com) that pointed me to the WiFi add-on card.

I never used WiFi on these PCs, so I pulled the card out and lo and behold: Windows 10 installation finally succeeds without problems!

My experience with Ubiquiti UniFi wireless

In late 2016, I replaced my existing Apple / AVM Fritz!Box mix of wireless networking gear with a set of Ubiquiti UniFi AP-AC Pro access points.

Overall, I’m very happy with them. Things I like:

  • Handoff between access points Just Works [tm]
  • They can perform rolling firmware upgrades, one AP at a time.
  • The APs support Power over Ethernet (PoE). This cuts down on cabling. I use them with Netgear GS110TP PoE switches.
  • Ubiquiti gear offers “Single Pane of Glass” management through the (free) Controller software. As an alternative, you can purchase a “Cloud Key”; haven’t gone that route myself.

Things I don’t like as much:

  • Initially I had a lot of issues with some iPads dropping off the network. After a lot of Googling, I found a post that suggested disabling the “connectivity monitor and wireless uplink”. Since all my APs are wired to the network, I disabled the Uplink Connectivity Monitor under Settings > Services and the problem disappeared.
  • To detach the access point from the mounting ring, you need a small “key”. It’s cumbersome; it would have been nicer to have a slightly larger opening so I can use a small flat-blade screwdriver.

Ubiquiti UniFi controller settings

I’ll be adding a UniFi  Security Gateway (USG) soon, to get better insight into the traffic on my wireless networks.

Sending SMS notifications with Gnokii on CentOS 6

I had a couple of Huawei USB UMTS/HSPA sticks gathering dust, so I decided to use them for SMS notifications. Below is a quick set of notes I took during the experiment.

Configuration

My setup:

  • CentOS 6.3 (64-bit)
  • GNOKII 0.6.30 (available from EPEL)
  • Huawei E160G and Huawei E176
  • Valid SIM card, PIN entry disabled

Plug in the USB stick, watch /var/log/messages. You should see something like this:

Jan 19 23:23:47 hal kernel: usb 2-2: new high speed USB device number 13 using ehci_hcd
Jan 19 23:23:48 hal kernel: usb 2-2: New USB device found, idVendor=12d1, idProduct=1003
Jan 19 23:23:48 hal kernel: usb 2-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
Jan 19 23:23:48 hal kernel: usb 2-2: Product: HUAWEI Mobile
Jan 19 23:23:48 hal kernel: usb 2-2: Manufacturer: HUAWEI Technology
Jan 19 23:23:48 hal kernel: usb 2-2: configuration #1 chosen from 1 choice
Jan 19 23:23:48 hal kernel: scsi36 : SCSI emulation for USB Mass Storage devices
Jan 19 23:23:48 hal kernel: usb 2-2: USB disconnect, device number 13
Jan 19 23:23:54 hal kernel: usb 2-2: new high speed USB device number 14 using ehci_hcd
Jan 19 23:23:54 hal kernel: usb 2-2: New USB device found, idVendor=12d1, idProduct=1003
Jan 19 23:23:54 hal kernel: usb 2-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
Jan 19 23:23:54 hal kernel: usb 2-2: Product: HUAWEI Mobile
Jan 19 23:23:54 hal kernel: usb 2-2: Manufacturer: HUAWEI Technology
Jan 19 23:23:54 hal kernel: usb 2-2: configuration #1 chosen from 1 choice
Jan 19 23:23:54 hal kernel: option 2-2:1.0: GSM modem (1-port) converter detected
Jan 19 23:23:54 hal kernel: usb 2-2: GSM modem (1-port) converter now attached to ttyUSB0
Jan 19 23:23:54 hal kernel: option 2-2:1.1: GSM modem (1-port) converter detected
Jan 19 23:23:54 hal kernel: usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1
Jan 19 23:23:54 hal kernel: scsi39 : SCSI emulation for USB Mass Storage devices
Jan 19 23:23:54 hal kernel: scsi40 : SCSI emulation for USB Mass Storage devices
Jan 19 23:23:55 hal kernel: scsi 39:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
Jan 19 23:23:55 hal kernel: scsi 40:0:0:0: Direct-Access     HUAWEI   MMC Storage      2.31 PQ: 0 ANSI: 2
Jan 19 23:23:55 hal kernel: sr1: scsi-1 drive
Jan 19 23:23:55 hal kernel: sr 39:0:0:0: Attached scsi generic sg3 type 5
Jan 19 23:23:55 hal kernel: sd 40:0:0:0: Attached scsi generic sg4 type 0
Jan 19 23:23:55 hal kernel: sd 40:0:0:0: [sdc] Attached SCSI removable disk

Each Huawei sticks presents itself as 2 separate USB modems: /dev/ttyUSB0 and /dev/ttyUSB1. I will use /dev/ttyUSB1 since SMS notifications are apparently only sent to the second port. The Micro-SD slot is reported as a SCSI device – not used here.

Now it’s time to configure Gnokii. I’ll send SMS as root, so I created directories under /root:

$ mkdir -p /root/.config/gnokii
$ mkdir -p /root/.cache/gnokii

Copy the default configuration file from /etc/gnokiirc to /root/.config/gnokii/config and add the following section:

# Huawei USB Stick
[phone_huawei]
model = AT
port = /dev/ttyUSB1
connection = serial

Issue a Gnokii command to verify that it works:

$ gnokii --phone huawei --identify
GNOKII Version 0.6.30
IMEI         : 333444555666777
Manufacturer : huawei
No flags section in the config file.
Model        : E176
Product name : E176
Revision     : 11.126.02.01.55

Sending SMS

OK, now for the real test – sending an SMS:

$ echo "SMS from Huawei" | gnokii --sendsms +31612341234 -r

If the SMS was sent correctly, gnokii exits with status 0. You can check that using the $? variable in your shell.

Receiving SMS

Incoming SMS are saved on the SIM-card memory, in memory slots starting at 0 (zero). To read the first (oldest) received message:

$ gnokii --phone huawei --getsms SM 0

The next one can be read using:

$ gnokii --phone huawei --getsms SM 1

… and so on.

Once you processed a message, you can delete it from the SIM-card:

$ gnokii --phone huawei --deletesms SM 1

There’s a lot of fun to be had with this setup – using simple SMS.

For interactive viewing of incoming SMS, use:

$ gnokii --phone huawei --smsreader

This will show new messages immediately.

Wrap-up

There’s lots more information to be found on the Gnokii Wiki.

My Huawei E160G turns out to have a SIM-lock on it. It would error out on most requests until I inserted a SIM of the correct network. Not all documented commands work:

$ gnokii --phone huawei --getlocksinfo
GNOKII Version 0.6.30
Error: Command called isn't implemented in model.

This makes troubleshooting quite a bit harder…

Nagios alerting

Next on my list is integration with Nagios – this is fairly simple; set up a Host Notification and Service Notification command that echoes a message to Gnokii. Voila: SMS alerting for Nagios ;-)

Process incoming SMS

Incoming SMS can be read using “gnokii --getsms“, but “gnokii-smsd” is a better option. It polls the USB modem regularly, and stores received messages in a database (PostgreSQL or MySQL). This makes it quite easy to use SMS from your own applications.

Have fun!

Setting up email notifications on a Synology NAS using Google Apps

I recently purchased two DS413j Synology NAS devices, running Disk Station Manager 4.1.

They offer various notification options, including Email, SMS and Push. These notifications are really helpful, as they can warn you of impending doom (for example, a failing disk).

It’s a fairly straight-forward process:

  1. Set up a dedicated Google Apps user account for sending your notifications (do not forget to activate the account via the webmail interface)
  2. Configure email notifications on your Synology NAS
  3. (Optional) customize the list of events that send out notifications

Configure Google Apps

Log on to Google Apps as a domain administrator and go to the Organization & users tab. Click “Create a new user” and follow the instructions to create a dedicated user account for sending your notifications (for example, “notifications@your.domain”). Activate that account (log on using the web interface, fill the Captcha, accept the conditions, set a secure password) and try sending an email from the web interface to verify that the account works.

Configure email notifications

On the Synology, open the web interface and go to Control Panel – Notification. On the General tab, check “Enable e-mail notifications” and enter the Google Apps email server details:

SMTP server: smtp.gmail.com
SMTP port: 587

Check “Secure connection (SSL/TLS) is required” (see Google Support for up-to-date SMTP server names and port numbers)

Next up, click “SMTP Authentication” and fill in the username and password for the Google Apps account you just created.

Finally, we need to specify who should receive these notifications. Enter your email address here and click “Send a test email”. You should receive a test notification within minutes.

If all is well, click Apply to save these settings. Done!

Optional: Customize notifications

I recommend leaving these settings at default (all events will send out an email). If you want to customize anyway, go to Control Panel – Notification and switch to the Advanced tab. Here you can select what type of events should trigger a notification.

 

SELinux context for website with FTP access

So, you have decided to leave SELinux enabled. Congratulations, you have just taken a major step in securing your Internet-facing system.

Let’s say you are hosting a website that needs to be updated using FTP. By default, webserver content is labeled as:

httpd_sys_content_t

This context prevents you from updating files using the FTP server. If both HTTP (Apache) and FTP (vsftpd) access is needed, the SELinux context should be:

public_content_rw_t

You can either run “chcon” to temporarily fix this, or make the changes permanent by adding a proper local SELinux rule:

semanage fcontext -a -t public_content_rw_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html

Replace “/var/www/html” by your actual DocumentRoot as defined in Apache. The “semanage” command merely adds the rule to the SELinux database. The “restorecon” command performs the actual relabeling of your files.

Verify your changes using “ls -lZ”:

[root@webserver www]# ls -lZ
drwxr-sr-x. ed www unconfined_u:object_r:httpd_sys_content_t:s0 cgi-bin
drwxr-sr-x. ed www unconfined_u:object_r:httpd_sys_content_t:s0 error
drwxr-sr-x. ed www unconfined_u:object_r:public_content_rw_t:s0 html
drwxr-sr-x. ed www unconfined_u:object_r:httpd_sys_content_t:s0 icons

Done!