WiFi Analyzer promo video

Hi guys,

I just created a new promotional video for my WiFi Analyzer and WiFi Analyzer Pro, and I thought I share it with you.


Huawei Mate 10 Pro performance (WiFi, internal storage)

Hi guys,

I just created a few WiFi and internal storage performance tests on Huawei Mate 10 Pro (this is my new phone) using my apps.

First of all, here is the WiFi performance. I used my WiFi Speed Test app to measure it. The phone uses 2x MIMO (802.11ac) with 80 MHz bandwidth, with link speed at 866 Mbps.

The performance (the real speed) was 384 Mbps (48 MB/s), it’s absolute fine. (the router was a TP-Link Archer C5, and the server was running on a laptop connected to the router via gigabit LAN).


And I also executed an internal storage performance test using my SD Card Test app.

The write speed was around 202 MB/s, the read was 619 MB/sec, when reading and writing a 16 GB of single file. It’s  UFS 2.1 performance.


Here you can find more screenshots about the details, including the graphs:


Everday syslog-ng: How to configure syslog-ng Kafka destination to use Kerberos

Hello guys,

Now I just want to write something interesting about my favorite logging application called syslog-ng.


  • Active Kerberos server
  • Active Apache Kafka server configured to use Kerberos
  • The Kerberos client libs (krb5-user krb5-config) are installed and configured on the host where syslog-ng is running
  • syslog-ng OSE 3.12 or newer
  • or syslog-ng Premium Edition 7.0.5 or newer
  • Java Cryptography Extension (JCE): To use Kerberos, syslog-ng needs this Java extension. You should download and install it to your computer where syslog-ng runs.

In the first scenario, I will configure syslog-ng to use Kerberos with SASL_PLAINTEXT authentication, in the second part, Kerberos with SSL.

Syslog-ng configuration

First of all we need a syslog-ng configuration. Here is mine (the embedded configs are detailed below):

@version: 3.12
@module “mod-java”
@include “scl.conf”
options {
jvm_options(“-Djava.security.auth.login.config=/home/pzolee/install/configs/kafkakerberos/client.jaas -Djava.security.krb5.conf=/etc/krb5.conf -Dlog4j.configuration=file:/home/pzolee/install/configs/kafkakerberos/log4.properties”);

source s_network_5acd1de3c3494308820dd80525d0a1aa {

destination d_kafka_e0fb1bbb06d345f4ba3770b4eecc4a8a {


log {

It just contains a simple network (tcp) source where the logs are coming, and a Kafka destination where the logs are forwarded. For the options of Kafka destination, read the documentation.

The client.jaas file contains the required parts for Kerberos:

cat client.jaas
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required refreshKrb5Config=true useKeyTab=true keyTab=”/home/pzolee/install/configs/kafkakerberos/client.keytab” storeKey=true principal=”client/thor.mydomain@SYSLOG-NG.MYDOMAIN”;};

Keytab file

Because syslog-ng runs as a daemon without interactive user login, we want to use keytab file instead of manually initialize Kerberos and typing the password.

So generate a Kerberos keytab file for syslog-ng. Here is the example of my keytab file:

klist -kte /home/pzolee/install/configs/kafkakerberos/client.keytab
Keytab name: FILE:/home/pzolee/install/configs/kafkakerberos/client.keytab
KVNO Timestamp           Principal

—- ——————- ——————————————————

1 2017-09-26 15:18:23 client/thor.mydomain@SYSLOG-NG.MYDOMAIN(aes256-cts-hmac-sha1-96)

Don’t forget, Kerberos checks the FQDN in the principal, so the hostname should be correct.
Properties files

We need a Kafka producer properties files for syslog-ng with the following content:

cat /home/pzolee/install/configs/kafkakerberos/producer.properties

For bootstrap.servers you should use your Kafka server and for sasl.kerberos.service.name the same name that is configured in the server.properties file in the Kafka server.

And another one for log4j to see some debug messages

cat /home/pzolee/install/configs/kafkakerberos/log4.properties

Now start syslog-ng:

sbin/syslog-ng -Fevd

[2017-09-28T10:24:08.306159] syslog-ng starting up; version=’3.11.1′
[2017-09-28T10:24:08.341826] ProducerConfig values: \x0a acks = 1\x0a batch.size = 16384\x0a bootstrap.servers = [thor.mydomain:9092]\x0a buffer.memory = 33554432\x0a client.id = \x0a compression.type = none\x0a connections.max.idle.ms = 540000\x0a enable.idempotence = false\x0a interceptor.classes = null\x0a key.serializer = class org.apache.kafka.common.serialization.StringSerializer\x0a linger.ms = 0\x0a max.block.ms = 60000\x0a max.in.flight.requests.per.connection = 5\x0a max.request.size = 1048576\x0a metadata.max.age.ms = 300000\x0a metric.reporters = []\x0a metrics.num.samples = 2\x0a metrics.recording.level = INFO\x0a metrics.sample.window.ms = 30000\x0a partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner\x0a receive.buffer.bytes = 32768\x0a reconnect.backoff.max.ms = 1000\x0a reconnect.backoff.ms = 50\x0a request.timeout.ms = 30000\x0a retries = 0\x0a retry.backoff.ms = 100\x0a sasl.jaas.config = null\x0a sasl.kerberos.kinit.cmd = /usr/bin/kinit\x0a sasl.kerberos.min.time.before.relogin = 60000\x0a sasl.kerberos.service.name = kafka\x0a sasl.kerberos.ticket.renew.jitter = 0.05\x0a sasl.kerberos.ticket.renew.window.factor = 0.8\x0a sasl.mechanism = GSSAPI\x0a security.protocol = SASL_PLAINTEXT\x0a send.buffer.bytes = 131072\x0a ssl.cipher.suites = null\x0a ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]\x0a ssl.endpoint.identification.algorithm = null\x0a ssl.key.password = null\x0a ssl.keymanager.algorithm = SunX509\x0a ssl.keystore.location = null\x0a ssl.keystore.password = null\x0a ssl.keystore.type = JKS\x0a ssl.protocol = TLS\x0a ssl.provider = null\x0a ssl.secure.random.implementation = null\x0a ssl.trustmanager.algorithm = PKIX\x0a ssl.truststore.location = null\x0a ssl.truststore.password = null\x0a ssl.truststore.type = JKS\x0a transaction.timeout.ms = 60000\x0a transactional.id = null\x0a value.serializer = class org.apache.kafka.common.serialization.StringSerializer\x0a;
[2017-09-28T10:24:08.713300] Successfully logged in.;
[2017-09-28T10:24:08.716513] [Principal=client/thor.mydomain@SYSLOG-NG.MYDOMAIN]: TGT refresh thread started.;
[2017-09-28T10:24:08.719814] [Principal=client/thor.mydomain@SYSLOG-NG.MYDOMAIN]: TGT valid starting at: Thu Sep 28 10:24:21 CEST 2017;
[2017-09-28T10:24:08.720000] [Principal=client/thor.mydomain@SYSLOG-NG.MYDOMAIN]: TGT expires: Thu Sep 28 20:24:21 CEST 2017;
[2017-09-28T10:24:08.720146] [Principal=client/thor.mydomain@SYSLOG-NG.MYDOMAIN]: TGT refresh sleeping until: Thu Sep 28 18:29:04 CEST 2017;

As you can see, syslog-ng could log in to Kafka using kerberos.

Configuring syslog-ng Kafka destination with Kerberos and SSL


  • Kafka broker is configured to use Kerberos with SSL

You only need a few minor changes in producer.properties file:

cat /home/pzolee/install/configs/kafkakerberos/producer.properties

You only have to change the security.protocol from SASL_PLAINTEXT to SASL_SSL and provide the keystore and truststore paths and passwords.

If you want to see the ssl logs, add “-Djavax.net.debug=all” to the jvm_options.

How to test your NAS speed

This is just something personal.

Recently I installed a Synology NAS (DS216j) to my home and wanted to test the speed of this NAS. Of course you can test it via file copy but I wanted to know several values:

  • the maximum available raw speed when my computer is connected to the NAS
  • the maximum available raw speed when my mobile is connected to the NAS
  • and the samba speed when my mobile using the NAS

So first of all, I enabled ssh connection to my NAS, then copied my wifi-speed-test-server.py file to the NAS. This Synology NAS already contains python support, so I could start it easily:

pzolee@pzoleenas:/volume1/$ python wifi_speed_test_server.py

Then just downloaded and started the java version of wifi speed test app, set the IP address of the NAS and started the test:

Wow, it was impressive 316 Mbps (~40 MB/s). My laptop is using AC wifi.

Then I tested the same on my mobile (LG G4) with my WiFi Speed Test app:


It was very similar, 33 MB/s.

And finally I tested the samba speed:

Using my laptop, I could reach the 40 MB/s transfer rate via samba, but my phone could only transfer with 7 MB/s.

What you have to know about SD card speed

Hi guys,

I just want to discuss something related to my SD Card Test app. Sometimes I got negative feedback (low rating) with the following content:

“this app is wrong because it reports slow sd card speed (only 20 MB/s) and I have a Class 10 sd card subtitled up to 100 MB/s”

In fact, the app is good and the sd card is slow, that’s the reality.

Class 10 means the minimum sequential write speed is 10 MB/s. That’s all and nothing more. Anything above this value is just “up to”, and in fact that means nothing.

Let me tell you an example:

I have an Samsung EVO 64 GB Sd card, the type is Class 10/U1/XC1.  The spec mentions “up to” 48 MB/s.

But is this true? The trick is the next: the highlighted value is the read speed and not the write.

The reality is the next:

  • write speed:  23 MB/s
  • read speed: 45 MB/s

I tested it with my app, and with my computer too, the result is the same.

My app will assign the class type based on the write speed and you can compare the read and write speed.










The specification is the next:

  • class 10/UHS-1: the minimum sequential write speed is 10 MB/s
  • UHS-3/V30: the minimum sequential write speed is 30 MB/s
  • V60: the minimum sequential write speed is 60 MB/s
  • V90: the minimum sequential write speed is 90 MB/s

So when you find the measured speed too slow, don’t think my app is wrong, just check the class type and don’t believe for the marketing texts (“up to”).

SD Card Test


device-2017-01-17-222230Hi guys,

I have a new app on Google Play, called SD Card Test. You can download it using this link.

Using this app, you can test the speed of the internal (built-in) or external (removable) SD card. You can measure both read and write speeds.





Here are a few more screenshots:


Network Signal Monitor for Android

Hello guys!

networksignalmonitor1Let me introduce my new app called Network Signal Monitor. You can download it from Google Play, link here.

This app is very similar to my existing WiFi Analyzer application, but it monitors and analyzes the cellular network of your mobile phone. So it will check your network type like LTE or HSDPA, the latency, signal strength and others.

Main features:
* detailed mobile network information
* detailed SIM information
* analyzing function
* real-time signal strength on the dashboard and on the graph.

As this is a new app, forgive me if you find any error or problem in the app, but feel free to send me your remarks.

Dual SIM devices are also supported, but currently only partially (I’m working on it).

More screenshot about the application: