Month: July 2021

Where to stay in Pattaya?

I write about Pattaya, about the purchase of housing there, and after all, its streets are right in front of my eyes, but I caught myself thinking that not everyone is well oriented in this city.

Let me introduce you to it a little on Google Maps.

Legend on my map:

1. Scale. This line is equal to one kilometer.

2. I have lived in this place for over a year, this is my first home when I came to live in Thailand. To the sea in a straight line a little more than a kilometer.

3. Big C Extra, Pro Language School – a large supermarket and language training school (for student visa), respectively. From my house to school 5-7 minutes walk and I was still late)))

4. The famous Walking Street

5. Pratumnak Hill (the edge of South Pattaya towards Jomtien), in short “mountains”. Here is the Pattaya View Point and the big Buddha. This, along with Walking Street, South Pattaya

6. Jomtien, Pattaya area stretched along the sea. There are umbrellas on the shore, it is here that the Immigration Office is where all foreigners need to go. A normal place, but a little far from the center, so rental housing is cheaper here

7. Central Festival is a big, maybe the biggest shopping center. This is where the ShabuShi Buffet, Zara Store and more are located. We met here for the first time with my first wife)))) I like this place.

8. The so-called Coconut Bar. Wide pedestrian path along the sea to Walking Street. Coconut – because coconut trees grow there. And Bar – because there are girls on the path…

9. Bus station – from here you can go to Bangkok and other places.

10. Sukhumvit Road – Sukhumvit Highway. I lived outside Sukhumvit, there is life there too (a reference to the joke “Is there life outside the Moscow Ring Road?”).

Where South Pattaya I said, Central Pattaya is the area where arrows 2, 3, 7, 8 are pointing. And North Pattaya on my map is partially cut off, it is located “above” Central on the map. There is also life there, in the sense of ordinary, it was there that I stayed on my first vacation. There is no nightlife beyond Sukhumvit, in North Pattaya the nightlife is also so-so, all the movement is in the South. Central also has something.

Where Dmitry (Thailandcer) lived in Pattaya

Thailandcer is a popular blogger, now deceased, he wrote about Thai women, night life. Let's find the area where he stayed in Pattaya – this is a quote from his commentary, I marked the legend on the second map with numbers in brackets. To make it easier for you to navigate, I added Central Festiva (1) and Walking Street (2) to the map:

Looking for a room in Pattaya. Again, I have never ordered in advance via the Internet. But I had personal preferences related to the past, nostalgia. Therefore, I always took a room in the area between soi Bongkot (8), the third street before the market in Bukhao (7), and the Beach road (6). It also includes soi Lengkee (3), soi Diana (4), Buakhao (5), and many small adjacent unnamed alleys. I walked around this area with my feet, although it is rather tiring. I always regretted that I did not rent a motorbike in the city. I looked into all suitable houses and asked for a room. I always examined the rooms personally.

The price depends on the pocket. Many rent only for a month. In general, I proceeded from the fact that a clean, bright room with air conditioning, within walking distance of places of interest to me, including Walking Street, should cost no more than 6,000 baht per month. Electricity and water are separate. In fact, for such a price it is very difficult to find in the area I need, either cramped, damp, dark and far away. Have to search.

Daily rent of rooms is unprofitable. They ask for a minimum of 600 baht per day, and up to 9,000 baht per month for the same room. It was expensive to me.

Look, not far from number 5 is 9 Karat Condo – I lived there for over a year at first. I often walked along the streets mentioned by Dmitry, but already arm in arm with my wife, usually returning from the beach or simply aimless city walks.

Everything is nearby, all the neighbors. Therefore, although Jomtien in terms of beach recreation is much better than the places described above in Central and South Pattaya, it is still “on the outskirts”, it is not exactly what we need.

I lived behind Sukhumvit for the reason that we were expecting the birth of a child, and three of us + grandmothers are cramped in the studio. Therefore, I rented a house – there was little money and at the price of a studio it was only enough for a house outside Sukhumvit. When my family came to visit, they liked it. But, in fact, it is not very convenient without a motorcycle. But here everything is primarily determined by personal life – at that time I was in such ecstasy that I simply did not pay attention to minor everyday inconveniences.

When (if at all) will all this be back now?..

So where to stay in Pattaya?

If you come for adult entertainment, then the most best place is in the area designated by Dmitry (Thailandcer). There are three-storey houses (townhouses) where you can find rooms for rent. In fact, close to this area you can find apartment buildings, like condos, but without a pool and their own territory. If I don’t save up for an apartment, then I’ll look for an apartment in Central Pattaya – in theory, it should be convenient and economical.

If you have come for a permanent life and have mastered a motorcycle, then you can rent a room almost anywhere – with a motorcycle it is convenient to live everywhere.

Without a motorcycle – Central Pattaya is convenient, it is convenient to get to schools, the beach, fairly large shopping centers and other shops.

How to shut down computers in PowerShell

Stop-Computer cmdlet

The Stop-Computer cmdlet shuts down the local or remote computer.

You can run Stop-Computer with additional options to specify authentication types and alternate credentials, and to force an immediate shutdown.

This cmdlet uses the Win32Shutdown method of the Win32_OperatingSystem WMI class.

The following two commands are identical and shutdown the local computer:

Stop-Computer -ComputerName localhost

The following example will shutdown a computer named Win-Server-Core that has an Administrator user with sufficient rights to shutdown the computer:

Stop-Computer -ComputerName Win-Server-Core -Credential Administrator

This command shuts down remote computers and the local computer.

Stop-Computer -ComputerName "Server01", "Server02", "localhost"

In the previous command, Stop-Computer uses the -ComputerName option to specify two remote computers and a local computer. Each of the listed computers will be turned off.

The following code shuts down remote computers as a background job:

$j = Stop-Computer -ComputerName "Server01", "Server02" &
$results = $j | Receive-Job

In the previous example, Stop-Computer uses the -ComputerName option to specify two remote computers. The background operator “&” translates the command as a background job. The job objects are stored in the $j variable.

The job objects in the $j variable are piped to Receive-Job, which receives the job results. The objects are stored in the $results variable. The $results variable displays information about the job in the PowerShell console.

Shutting down the remote computer:

Stop-Computer -ComputerName "Server01" -WsmanAuthentication Kerberos

In the previous example, Stop-Computer uses the -ComputerName option to specify the remote computer. The -WsmanAuthentication option specifies using Kerberos to establish a remote connection.

Shutting down a computer in the domain:

$s = Get-Content -Path ./Domain01.txt
$c = Get-Credential -Credential Domain01\Admin01
Stop-Computer -ComputerName $s -Force -Credential $c

In the previous example, Get-Content uses the -Path option to read the contents of the Domain01.txt file in the current directory with a list of domain computers. The objects are stored in the $s variable.

Then Get-Credential uses the -Credential option to specify the credentials of the domain administrator. The credentials are stored in the $c variable.

Finally, Stop-Computer shuts down the computers specified in the list of computers in the -ComputerName option in the $s variable. The -Force option causes immediate shutdown. The -Credential option passes your credentials stored in the $c variable.

Error “Unable to initiate a system shutdown because the computer is being used by other users”

Running command

Stop-Computer -ComputerName Win-Server-Core -Credential Administrator

may fail with the error message:

Stop-Computer: Failed to stop the computer Win-Server-Core with the following error message: Unable to initiate a system shutdown because the computer is being used by other users

Its reason is that users are logged in to the computer and are using it.

To force shutdown, specify the -Force option:

Stop-Computer -ComputerName Win-Server-Core -Credential Administrator -Force

Shutting down the computer without PowerShell

Without PowerShell, you can shutdown your computer with the following command:

shutdown /s

You will be shown a warning and the computer will shut down after 30 seconds.

To shut down the computer immediately, run the command:

shutdown /s /t 0

You can add the /f option to the command, which means forcibly closing running applications without warning users. The /f parameter is implied if the /t parameter is set to a value greater than 0.

How to restart computers in PowerShell

Restart-Computer Cmdlet

The Restart-Computer cmdlet restarts the operating system on a local or remote computer.

The following command will reboot the local computer:


You can use Restart-Computer with various parameters to trigger restart operations, to specify authentication levels and alternate credentials, to restrict operations to be performed simultaneously, and to restart immediately.

Starting with Windows PowerShell 3.0, you can wait until the reboot is complete before running the next command. Specify the timeout and request interval and wait for certain services to be available on the rebooted computer. This feature makes it practical to use Restart-Computer in scripts and functions.

Restart-Computer only works on Windows computers and requires WinRM and WMI to shut down the system, including the local one.

Example of restarting multiple computers:

Restart-Computer -ComputerName Server01, Server02, localhost

The -ComputerName <String[]> option specifies a single computer name or an array of computer names separated by commas. Restart-Computer accepts ComputerName objects from a pipeline or variables.

Enter the NetBIOS name, IP address, or fully qualified domain name of the remote computer. To specify the local computer, enter the computer name, period “.” or “localhost”.

This parameter is independent of PowerShell remoting. You can use the -ComputerName parameter even if your computer is not configured to run remote commands.

If the -ComputerName parameter is not specified, Restart-Computer restarts the local computer.

If you are restarting a remote computer, you will most likely need the -Credential <PSCredential> option, which specifies a user account that has permission to perform this action. By default, this is the current user.

Enter a username, such as User01 or Domain01\User01, or enter the PSCredential object generated by the Get-Credential cmdlet. If you enter a username, you will be prompted for a password.

The credentials are stored in the PSCredential object (/dotnet/api/ and the password is stored as SecureString (/dotnet/api/

The following example reboots computers whose names are obtained from a text file:

Get-Content -Path C:\Domain01.txt | Restart-Computer

Get-Content uses the -Path parameter to get a list of computer names from the Domain01.txt text file. Computer names are sent down the pipeline. Restart-Computer restarts every computer.

Forced restart of computers listed in the text file:

$Names = Get-Content -Path C:\Domain01.txt
$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds -Force

Get-Content uses the -Path parameter to get a list of computer names from the Domain01.txt text file. Computer names are stored in the $Names variable. Get-Credential prompts you for a username and password and stores the values in the $Creds variable. Restart-Computer uses the -ComputerName and -Credential parameters with their variables. The -Force option causes each computer to restart immediately.

Restarting the remote computer and waiting for it to turn on to execute PowerShell:

Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2

Restart-Computer uses the -ComputerName parameter to restart Server01. The -Wait parameter makes the command wait for the restart to complete. -For sets PowerShell to run commands on the remote computer. The -Timeout parameter sets a five minute wait. The -Delay parameter polls the remote computer every two seconds to determine if it has restarted.

Restarting your computer using WsmanAuthentication:

Restart-Computer -ComputerName Server01 -WsmanAuthentication Kerberos

Restart-Computer uses the -ComputerName parameter to restart the Server01 remote computer. The -WsmanAuthentication parameter specifies the Kerberos authentication method.

Error “Unable to initiate a system shutdown because the computer is being used by other users”

When restarting a remote computer, for example:

Restart-Computer -ComputerName Win-Server-Core -Credential Administrator

an error may occur

Restart-Computer: Failed to restart the computer Win-Server-Core with the following error message: System shutdown cannot be initiated because the computer is in use by other users.

This error occurs if any user is logged in to the remote computer, use the -Force option to force reboot:

Restart-Computer -ComputerName Win-Server-Core -Credential Administrator -Force

Restarting the computer without PowerShell

Without PowerShell, you can restart your computer with the following command:

shutdown /r

You will be shown a warning and the computer will restart after 30 seconds.

To restart your computer immediately, run the command:

shutdown /r /t 0

You can add the /f option to the command, which means forcibly closing running applications without warning users. The /f parameter is implied if the /t parameter is set to a value greater than 0.

I wanted to advertise Wise (TransferWise), but I could not make a transfer…

TransferWise renamed Wise

You may not have heard the name Wise when it comes to cheap international money transfers, as TransferWise recently changed its name to Wise and even changed its website address.

Wise is not a new company, it is a well-established English company with the cheapest international transfers.

I have been using PaySend for a long time and with pleasure for cheap international transfers, for example, see one of the latest articles “International PaySend transfers - real customer feedback (2.5 years of experience, dozens of transactions)”.

I do not have any attachment to this or that company for international transfers, the most important thing is reliability and minimal commissions, so I also considered Wise (TransferWise), I did a comparison of the cost of a transfer and it turned out that Wise is even slightly more profitable than PaySend, for at least the first free payment, see “TransferWise overview: international transfers and multi-currency debit card”.

And although Wise is more profitable, I have not made a single international payment through this company. Nevertheless, I received my £50 bonus and successfully withdrawn it to my Thai account (by the way, £50 is only THB 2,228.15).

How to use Wise (TransferWise) to receive and send money transfers

In order to withdraw the bonus, I had to:

  • scan both sides of my Thai driver's license
  • take my photo with a driver's license in hand
  • inform my mailing address

Let me remind you that to send international payments via PaySend, you just need to know the recipient's card number – and that's all you need (or the recipient's bank and account number, if you are sending to bank details). You do not need to report anything about yourself – as such, there is just no “verification”.

In Wise, you don't just need to be verified – you need to send your ID with every (!) transfer. I don't understand what is the point – after all, everyone will still send the same file, once photographed or scanned document. But this is the European Union – it should be so there…

Well, since I still passed the verification, I decided to write instructions on how to make money transfers through Wise.

And… I failed – I could not make the transfer…

It was like this – I filled out all the forms, re-sent the Thai driver's license scanned from both sides and received a reply - “Verification problem - Sorry, we can't accept the document you sent us”.

Once again, the same document, the same file, scanned (and not photographed) by which I have already withdrawn money – they cannot accept… How so?

I wrote to the support service with this question – they answered me, more on that below.

In parallel with this, I canceled the transfer and started a new one (you never know what a glitch). At this stage, it turned out that now I no longer have a discount on the first transfer, and taking into account the commissions, the international money transfer has become more expensive than through PaySend…

The support service answered me a day later:

Sorry, we couldn't read the details on your ID.

To verify you, we need to read what's printed on your ID.

When you take a photo of your ID, please make sure we can see:

  • The whole document — everything on it should be readable.
  • Both sides of the document, if you're sending us a driver's license or a national ID card.

You can upload a new photo by clicking the button below.

They cannot read my document. Here is my document, I closed the numbers, but I sent them without erasures. For the first time, this same document, this same file, they were able to read…

In general, I failed with Wise…

And I'm clearly not alone. For comparison, I decided to calculate how many transfers were made according to my recommendations in PaySend and in Wise (TransferWise).

In PaySend, I can calculate the number of transfers according to my recommendation only approximately, the fact is that I receive my bonus only for the second transfer. If someone made one transfer, then I will never know about it – such statistics are not shown by the user. So, the second or subsequent (up to the twelfth and only within one year) transfers according to my recommendation in PaySend were made 787. Also, I do not receive bonuses for internal (within one country) transfers and they are not displayed in my statistics in any way. In reality (according to the very minimum estimates), more than a thousand international PaySend transfers were made on my recommendation (in reality, most likely, the figure is in the region of 2-3 thousand). I myself have made dozens of international transfers in PaySend.

Moving on to the Wise statistics (TransferWise) – I already said that I received a bonus, so it is not zero.

Here is a list, it is a little incomplete (there are below users who registered, but did not make any transfer). So, on my recommendation, six international transfers were made to Wise (TransferWise) (four of which qualify for a bonus).

In general, the difference is two or three orders of magnitude… And this despite the fact that Wise has a lower commission (at least for the first international money transfer).

In general, it is not always a matter of price. In terms of complex indicators of quality (value for money, convenience), PaySend outperforms Wise in international money transfers.

PaySend promo code for the first transfer without commission: 0d8425

Wise (TransferWise) promo code

I didn't do well with Wise (TransferWise), but you might be better, so if you want to make an international money transfer without commission, then use this link: - it contains Wise (TransferWise) promo code. You can send a commission-free transfer to Wise in the amount of up to 500 GBP (British pounds – the rate is slightly more expensive than the US dollar).

By the way, if in Wise (TransferWise) you send money to yourself, then verification for these transfers is not required – if you transfer your own funds from one country to another, then in Wise there are not such strict rules for such transfers.

How to configure the network interface to use a dynamic IP address (DHCP) in PowerShell

Note: all settings in this article must be done with administrator rights.

Dynamic Host Configuration Protocol (DHCP) allows the network adapter to obtain the correct network settings without manually configuring network interfaces.

To manage a network interface, you need to know its index. The list of interfaces and their indices can be obtained with the following command:

Get-NetIPAddress | Format-Table

Before activating DHCP on the network interface, you need to delete the IP address settings (if any).

Remove the static IP address:

Remove-NetIPAddress -InterfaceIndex INTERFACE_INDEX

Remove the default gateway:

Remove-NetRoute -InterfaceIndex INTERFACE_INDEX

For example:

Remove-NetIPAddress -InterfaceIndex 18
Remove-NetRoute -InterfaceIndex 18

Remove an IP address using a pipeline:

Get-NetIPAddress -IPAddress | Remove-NetIPAddress

This command removes all of the IP addresses with the address

To enable DHCP on the network interface, use a command of the form:

Set-NetIPInterface -InterfaceIndex INTERFACE_INDEX -Dhcp Enabled

For example:

Set-NetIPInterface -InterfaceIndex 18 -Dhcp Enabled

If you want to delete records about DNS servers so that DNS settings are also obtained automatically, then run the following command:

Set-DnsClientServerAddress -InterfaceIndex INTERFACE_INDEX -ResetServerAddresses

Please note that you can use DHCP and DNS server settings at the same time (specify the desired DNS servers for the network interface, which automatically receive an IP address and other network settings). To set the DNS server settings on the network interface with the specified index, use a command of the form:

Set-DnsClientServerAddress -InterfaceIndex INTERFACE_INDEX -ServerAddresses ("","")

How to set IP address, netmask, default gateway and DNS for a network interface in PowerShell

Setting a static IP, netmask and gateway for a network adapter in PowerShell is a little confusing but possible. This post will show you how to do this using the New-NetIPAddress and Set-NetIPAddress cmdlets.

The old way of configuring network interfaces is using the netsh command. First, we look at the name of the network interfaces of any of the following commands (they are equivalent):

netsh interface show interface
netsh int show int

Then we set the parameters for the selected network interface (in the following commands this is the interface named “Wi-Fi”):

netsh interface ip set address "Wi-Fi" static <IP> <SUBNET> <GATEWATE>
netsh interface ip set dns "Wi-Fi" static <DNS SERVER>

But the netsh command is deprecated and Microsoft warns that they can remove netsh and we should use Powershell.

To manage a network adapter, we need to know its index, you can get it with the command:


The Get-NetIPAddress cmdlet retrieves the IP address configuration such as IPv4 addresses, IPv6 addresses, and IP interfaces to which the addresses are associated.

You can use the following command to present information more conveniently:

Get-NetIPAddress | Format-Table

Additionally, you can sort by interface index number:

Get-NetIPAddress | Sort-Object -Property InterfaceIndex | Format-Table

Then, using the New-NetIPAddress cmdlet, you can set a static IP address:

New-NetIPAddress -InterfaceIndex NTERFACE_INDEX -IPAddress IP_ADDRESS -PrefixLength MASK -DefaultGateway GATEWAY

For example, the command to configure the network adapter with index 18 static IP address with subnet mask /24 ( and default gateway

New-NetIPAddress -InterfaceIndex 18 -IPAddress -PrefixLength 24 -DefaultGateway

This command will work fine if you want to switch from a dynamic IP address to a static one. But if you want to change the parameters of the network interface on which a static IP address is already set, then you will receive the following error:

New-NetIPAddress: Instance DefaultGateway already exists

To work around this, you can use Set-NetIPAddress, but this cmdlet does not accept the -DefaultGateway parameter, so a new address is assigned, but with the old gateway.

For example, the following command:

Set-NetIPAddress -InterfaceIndex 18 -IPAddress -PrefixLength 24 -DefaultGateway

fails with the error:

Set-NetIPAddress: A parameter cannot be found that matches parameter name 'DefaultGateway'.

How do I remove the gateway to start with New-NetIPAddress, or replace the gateway when using Set-NetIPAddress?

It is necessary to use the following algorithm of actions.

Remove the static IP address:

Remove-NetIPAddress -InterfaceIndex INTERFACE_INDEX

Removing the default gateway:

Remove-NetRoute -InterfaceIndex INTERFACE_INDEX

Add a new IP address and gateway:

New-NetIPAddress -InterfaceIndex INTERFACE_INDEX -AddressFamily IPv4 -PrefixLength 24 -Type Unicast -DefaultGateway

To set the DNS server settings on the network interface with the specified index, use a command of the form:

Set-DnsClientServerAddress -InterfaceIndex INTERFACE_INDEX -ServerAddresses ("","")

How to configure HTTP Digest Authentication in Squid

Basic authentication is bad because the password is actually transmitted in plain text (encoded in Base64). See the article “How to hack HTTP Basic and Digest Authentication” for details.

Therefore, it is preferable to use Digest authentication on the Squid proxy server.

Let's start by creating a file with a password hash, this is done with a command like:

sudo htdigest -c /etc/squid/passwd_digest REALM USER

REALM is a field of application. Any string can be used as a REALM, but remember that this same string will subsequently be shown in the form for entering a username and password.

An example of a command that creates a file with a password hash for the mial user:

sudo htdigest -c /etc/squid/passwd_digest 'Squid proxy for' mial

Example configuration file for HTTP Digest authentication in Squid:

http_port 4080
via off
cache deny all

auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwd_digest
auth_param digest children 5
auth_param digest credentialsttl 2 hours
auth_param digest casesensitive on
auth_param digest realm Squid proxy for
acl auth_users proxy_auth REQUIRED

http_access allow auth_users
http_access deny all

Pay attention to the line “auth_param digest realm Squid proxy for”, in it, instead of “Squid proxy for”, enter the same line that you specified when using the htdigest command.

For an explanation of the directives, see the section “Configuring HTTP Basic Authentication in Squid” above.

Note that not only has the helper program (digest_file_auth) been changed, but also the -c option is used after it, followed by the path to the file with the user's password hash. All other directives are similar to HTTP Basic authentication, except that the word “basic” is replaced with the word “digest”.

See also the Squid setup guide: How to create and configure a Squid proxy server

An unplugged disk causes a delay in system boot

The fstab file contains descriptive information about the file systems that the system can mount. In the /etc/fstab file, you can specify the parameters for mounting a disk, which can be either plugged to the system or unplugged from it. An example of such a disk is an external USB drive. In the latter case, you must additionally specify the nofail option.

An example of such an entry:

UUID=26FC3023FC2FEC2D	/mnt/disk_e	ntfs	nofail,rw,utf8	0	0

Thanks to the nofail option, the system boots normally and shows no errors even if the specified disk is missing.

But starting with systemd 249-3, the system began to try to mount this disk even if it was not connected. As a result, when the computer was turned on, it waited for the timeout of this operation to complete, that is, the boot freeze for 90 seconds (the default timeout).

The following messages appeared in the system log:

HackWare systemd[1]: dev-disk-by\x2duuid-26FC3023FC2FEC2D.device: Job dev-disk-by\x2duuid-26FC3023FC2FEC2D.device/start timed out.
HackWare systemd[1]: Timed out waiting for device /dev/disk/by-uuid/26FC3023FC2FEC2D.
HackWare systemd[1]: dev-disk-by\x2duuid-26FC3023FC2FEC2D.device: Job dev-disk-by\x2duuid-26FC3023FC2FEC2D.device/start failed with result 'timeout'.

Most likely, this problem is a temporary bug that will be fixed in future versions of systemd. But now you can use the x-systemd.device-timeout mount option so that the computer does not wait a minute and a half.

In the following example, the timeout value is set to 1 second:


UUID=26FC3023FC2FEC2D	/mnt/disk_e	ntfs	nofail,rw,utf8,x-systemd.device-timeout=1	0	0

As a result, the computer began to turn on almost immediately, without delay.

If the specified disk is connected to the computer after turning on, then the disk will be mounted correctly, taking into account the options from the /etc/fstab file. The minimum timeout time is not an obstacle for mounting after turning on the computer.

If the disk is usually unplugged, then the noauto option is more appropriate:

UUID=26FC3023FC2FEC2D	/mnt/disk_e	ntfs	noauto,nofail,rw,utf8	0	0

This option makes it so that the system will not try to mount the disk when you turn on the computer. However, the next time you connect the disk, it will be mounted according to the options in the /etc/fstab file.

How to check if your computer supports TPM 2.0 on Linux

One of the requirements for Windows 11 is the TPM 2.0 chip. I think it was thanks to Windows 11 that many users learned about the existence of the TPM.

This article will tell you how to find out in Linux if there is a TPM and what version is it.

TPM: Trusted Platform Module 2.0 – this chip is common on motherboards released after 2016.

TPM hardware provides a tamper-proof method for storing encryption keys on a computer. On Windows 11, 10, 8, and 7, TPM is usually required to enable and use encryption features such as BitLocker.

How to find out if there is TPM on a Linux computer

Relatively fresh (released after 2016) laptops and motherboards should already have a TPM chip soldered. To verify this for sure using sysfs, run the command:

[[ -d $(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1) ]] && echo "TPM available" || echo "TPM missing"

Starting with kernel 5.6, the version number can be viewed in the sysfs file:

cat /sys/class/tpm/tpm*/tpm_version_major

As you can see in the screenshot, the test machine has a second version of TPM (this laptop was released in 2018).

All TPM devices must have /dev/tpm0, so another way is to check /dev/tpm0 or /dev/tpmrm0.

/dev/tpmrm0 is only available for TPM 2.0, but it was added in v4.12-rc1. If you have the second version, then the following command will display the corresponding message:

[ -c /dev/tpmrm0 ] && echo "TPM 2.0"

This command will print a message if you have version 1.2 or 2.0:

[ -c /dev/tpm0 ] && echo "TPM 1.2 or 2.0"

TPM can be disabled

If the previous commands show that you are missing a TPM, then this does not necessarily mean that the TPM is missing at all – it may just be disabled. Go to BIOS and look for settings with TPM in the name. If you find them, turn them on.

TPM setting is missing in BIOS, UEFI

Does it mean that if the TPM setting is missing in the BIOS, then the TPM is not installed? No, this is not so – the examples above, from which it follows that TPM 2.0 is installed in the test machine, were made on a laptop that does not mention TPM at all in the BIOS.

TPM software for Linux

On Linux, install the TrouSerS package to work with TPM. It comes with the tcsd utility.

How to check if kernel modules are loaded to work with TPM

To verify that the TPM kernel modules are loaded, run the following command:

lsmod | grep tpm

Linux Mint 20.2 Released: What’s New & Download Links

Download Linux Mint 20.2

Linux Mint 20.2 is uploaded to the mirrors and is available for download:

Linux Mint 20.2 “Uma”

The biggest piece of news this month is the upcoming release of Linux Mint 20.2 “Uma”. 

After the stable release is officially unveiled, the upgrade path will open from Linux Mint 20.1 and Linux Mint 20, and all new packages will be ported to LMDE 4. Some of the improvements and fixes made in Linux Mint 20.2 will also be carried over to earlier versions, in releases 20. x.


A new XApp was implemented to add the ability to bulk rename files in Cinnamon and MATE. The new application is called Bulky and it will ship in Linux Mint 20.2.

In Xfce, Thunar already comes with its own embedded bulk renamer, so Bulky won’t be needed there.

Nemo Content Search

Nemo will feature content search. Until now you could only search for files. In Nemo 5.0 you’ll be able to combine file search and content search, i.e. files which are named a certain way and/or which contain particular words.

Regular expressions and recursive folder searches will be supported.

AMD support in NVIDIA Prime applet

Nvidia-prime-applet 1.2.7 was backported recently. It contains a fix for a regression in ubuntu-drivers-common which made the applet disappear.

It also contains support for computers with AMD/NVIDIA hybrids (i.e. systems with an integrated AMD GPU and a discrete NVIDIA GPU).


The upcoming version of Warpinator will feature the ability to select which network interface you want to use. If you are connected to multiple interfaces (Wireless + ethernet for instance) this allows you to select which network you want to share files on.

A new optional compression setting will also be available. Once enabled on both machines, compression can make transfers up to 3 times faster.


Cinnamon 5 will provide management tools to check for and perform updates of Cinnamon spices. As a reminder, a Cinnamon “spice” is an add-on to the desktop environment which is not part of the core desktop. There are 4 types of spices:

  • applets (which run in panels)
  • desklets (which run on the desktop itself)
  • extensions (which modify how Cinnamon functions)
  • themes (which modify the way Cinnamon looks)

Until now to see updates and to apply them you had to go in the system settings or you had to use a 3rd party applet developed by Claudiux called “Spices Update“.

Cinnamon 5 will ship with a command line tool called cinnamon-spice-updater which can list available updates and/or apply them. To make it easy for distributions to integrate Cinnamon spice updates within their Update Manager a Python 3 module will also be provided.

Update Manager

The Mint Update Manager will support Cinnamon spice updates.

Although from a technical point of view they are radically different than APT updates, from a user point of view they will be presented in a very similar manner. You’ll be able to see the same kind of information for them, and to enjoy the same features as you did already, such as the ability to blacklist a particular spice or a version of a spice for instance.

You’ll also be able to automate spice updates. In automatic mode spices will be upgraded shortly after you log in, the DE will then get refreshed (this is barely visible, Cinnamon restarts itself seamlessly, you just see the mouse cursor get reset on the screen when this happens) and a notification will popup to show you what was upgraded.

The Update Manager will also handle the automation of Flatpak updates. This was previously located in “Startup Applications”.

Mint 18 EOL

It’s been 5 years already. Linux Mint 18, 18.1, 18.2 and 18.3 reached EOL (End of Life) this month and are no longer supported.

If you are running one of these releases your operating system will continue to work but you will no longer receive security updates from the repositories. We recommend you backup your data and perform a fresh installation of Linux Mint 20.1, which is supported until 2025.

Alternatively, you can upgrade to Linux Mint 19.3 which is supported until 2023.