Friday, December 24, 2021

Switching between Kerberos & Unix Authentication mechanism

 I had installed kerberos by mistake on my local VM for skol linux and ever since it would allow to create  users but won't allow to change password. Actually I had no need of Kerberos and had selected the option by mistake while installing the VM. 

Now, even after removing all kerberos packages and rebooting, it still did not exit my system. So I wanted local unix authentication. 

Problems faced: allowing creation of new user, but not allowing to set password

The solution is to use pam-auth-update and the resulting menu will allow you to unselect kerberos and keep the unix authentication. 

unselect kerberos authentication, block password change unix users and suggest Gosa instead and you are good for setting password of local users using unix authentication

What to do if you forget your password and even root password?

 If you forget your password and even the root password, you can stare into a blank login screen not knowing what to do. Here is one break for that situation.

While you are at Grub , instead of clicking enter on your linux distribution or kernel, click E, this will take you to edit mode for starting of that kernel. Try to find one line with "quiet" in the end. At the end of this line append init=/bin/bash and press F10 to boot further into single mode. 

The single user mode directly takes you to the root user. type passwd root at the prompt to set the new password for root. 

If you get error like "Authentication token manipulation error" or if root@none:/ is shown at the prompt, then, type the following command

mount -o remount, rw/

this will remount the filesystem and will allow to change the root password. 

Thursday, December 23, 2021

wifi Tethering to VM on virtualbox

 The usual and most common method to pass internet to the VM from host network is to keep the adapter of VM in bridged mode and the internet connection of the host is shared to the VM whether VM is linux or windows

However, though this works without problem if the host internet connection is through wired medium(Ethernet). When host gets the connection through wifi, this method of bridge does not work. 

Soultion:

The solution is rather simple, in the guest VM settings in virtualbox manager, go to network and in Advanced settings, copy the mac address of the host wifi adapter(which you can get by going to network connections, and rt clicking the wifi adapter and then clicking status and noting down the MAC address) and paste it in the MAC address box replacing whatever was existing in the box.

This can be done only when the VM is offline. once done, check using ip address or ipconfig command in guest VM  and you would find that that the eth1 adapter in VM has already been allotted an ip address in same series as wifi adapter of host OS. ping google dns 8.8.8.8 and it should ping. open browser and check if it is opening google, if not, then just add DNS entry in VM which would be same  as gateway of WiFi dongle/router.

Wednesday, December 22, 2021

Getting internet via usb tethering(JIOfi) on Debian skol Linux VM created on virtual box & installing guest additions on it.

 The VM was created after downloading a iso file of Debian Blue ray iso and installing it to the VM.

Guest additions were required to run the VM in full screen, here is where problems started.

step1 : getting the usb tethered internet working

The Oracle virtual box does not support sharing of wifi connection (there is a trick, another blog post for that!) of host to guest, even if it supports, it is choppy at best, sometimes working, sometimes not working. 


I didn't have a wired connection of ethernet variety, so the only option left was to plug in USB of jiofi modem to laptop running windows 11 host. thereafter using the virtualbox (rt control key + home) menu, selected the USB modem (listed as Android) and made it visible to Debian VM. immediately, it got unistalled from windows and got connected to Debian. Drivers were added automatically.

The device was showing in command ip address( IPconfig is depreacted it seems) as usb0 and given an ip address. The jiofi uses 255.255.0.0 subnet mask. However, routing was messed up as the default routes all go to eth0, so this has to be disabled from the host first. (use vm manager, click on debian vm configuration and in Networks, select "Not Attached" in Adapter1).

The above step resolved all gateway issues etc and was able to ping the google dns 8.8.8.8. Browsing was still not going through, and therefore, had to add the jiofi DNS entry (which is same as gateway) manually in USB0 configuration.

Now, internet was working fine.

Step2: Install kernel headers

Follow this post

https://www.tecmint.com/install-kernel-headers-in-ubuntu-and-debian/

Step3: installing the guest additions

Follow this post 

https://linuxize.com/post/how-to-install-virtualbox-guest-additions-on-debian-10/


Skol Linux is very useful for school students with many apps for school subjects like physics, chemistry,maths,geography and also for topics like astronomy and music.


Sunday, November 21, 2021

Repair of HMI of Allen-Bradley 6181P-122TSXP no display problem

 1. HMI of Allen-Bradley 6181P-122TSXP


Fig 1: The HMI make & Model 

was not showing any display when powered up. This HMI is  used in Centrifuge. The cost of this machine is around Rs Seven Lakhs. 


2. Inserted a 4 digit PC motherboard diagnostic  card in the PCI  slot and powered up the machine, the numbers on digit display in card were changing and these numbers correspond to errors on mainboard. for ex, if the numbers stopped at 01 , implies the cpu has gone faulty or 2C implies bad memory etc. However, the number did not stop at these stages and continued up-to full boot. Therefore, it was concluded that boot process was normal and problem was in LCD display. The video


shows how it is done.


3. The LCD/LED display has two connectors coming from the mainboard , one is the 20 pin LVDS signal and other the power. 


Fig 2: The Motherboard showing power & LVDS connectors

The LVDS stands for low voltage differential signalling, and has three pairs differential signal and one pair of clock signals. The LVDS signals were verified with oscilloscope, and positive (up going signal in oscilloscope) and negative (down going signal in oscilloscope) was seen in the respective + and - pins in each differential pairs. The clock signal yielded a steady 4 MHz clock.


4. Thus, the problem appears to be that of backlight in LED display. The model of the display used is G12S1-L02. 


Fig 3: The LCD display panel G121S1-L02 showing the LCD2MB PCB

The datasheet of the display was also found on net and shared here. The backlight is provided by a string of LEDs which illuminates the LCD display. The power connector pin-out is shown here 


5. To access the backlight string of LEDs, the display was opened , and indeed, the backlight was not glowing. The LCD display has two PCBs one is LCD2MB pcb (shown in fig 3) which gets the power from the mainboard and supplies the +12V power,EN signal to the E88441 PCB which generates the actual timing,control and backlight voltage for driving the LCD and backlight LEDs. 


Fig 4: The LCD display opened revealing E88441 PCB containing the backlight controller

The LED display driver in E88441 PCB was identified by using 10X magnification on mobile camera and the part number noted down. Datasheet of this IC was downloaded. and can be viewed here


6. On studying the datasheet it was found that that pin # 28 of this IC had to be supplied with EN signal, which is a 5 v PWM signal, which can also control the brightness depending on PWM on time. The EN signal was being generated by the LCD2MB card in the display panel.  There is a touch point (TP) to verify the presence of this signal, which yielded no value with multimeter, so, this signal did not reach the display driver and failure was traced  to faulty resistors (R94,R82 & R104) on board.


Fig 5:  A8501 magnified 10x

7. The circuit in and around the LED driver IC U1 was traced with the help of multimeter continuity testing and all the required transistors and MOSFET identified and re-drawn on paper to understand the working. The circuit is given <here>


Fig 6: The backlight driver power save mechanism redrawn

8. It appeared that the resistors which were damaged were part of a 'power saving' mechanism to give reduced supply voltage of 10.73 V instead of 12 V to the display driver IC in the absence of EN signal.This mechanism was built around transistor Q7 and Q14 and MOSFET Q15 .  These resistors are 1% tolerance SMD resistors following the EIA-96 pattern of naming. The reistors which were damaged were marked as 70D, and 10S which have the value of  536K and 12.4 ohm respectively.


9. These resistors could not be sourced so a workaround was found to get the EN signal directly to IC U1 by shorting a path in PCB and bypassing the 'power save' circuitary by running the driver IC at 10.73 volts as is evident by seeing the circuit diagram traced above. The repair is shown in figure 7. The resulting voltage at LED backlight end was 20 V, which was sufficient to drive the backlight LEDs.



Fig 7: The soldered portion to supply EN signal directly to backlight controller

10. Assembled everything back, the display working ok.


Fig 8: HMI giving output after the repair

4. Annexure:-

4.1  For Full HD TV, 30 pin (10 pairs) connector is used. For HDTV, 20 pin (5 pairs--> 4 data pairs & 1 clock pair , 4 data pairs give 8 bits)  connector is sufficient. The three data pairs correspond to R,G,B signal and the fourth data pair is for B+Hsync and V.  For this particular 12 inch display 3 data pairs (Rin 0,1 & 2 corresponding to R,G,B) and one clock pair is used , the unused  1 data pair (Rin3 for B+Hsync & V) the + is connected to ground and - is NC. Therefore, 3 data pairs contribute 6 bits . The more number of pairs means more bits can be shown implying higher resolution. 


4.2 Youtube video about LVDS 


4.3 Some of the ICs identified in mainboard (DS90C385A-> LVDS serializer, Chrontel CH7308B--> PLL transmitter, ISL6262CRZ--> 2 phase buck converter) 


Fig 9 : 20 pin LVDS connector pin-out


Key Learnings:

1. Details of backlight LED driver IC and its working

2. LVDS signals and 4/6/8 bit differential signalling

3. EiA -96 1% resistor naming convention

 

Saturday, January 18, 2020

Design Notes

One stop reference for all design related stuff. 
Post all design related articles in continuation by editing this post
First up, the most simple, Saturated switch using BJT and Darlington. Notes in the attached figure.


(a) Saturated Switch  using BJT

(1) The ratio of Ic/Ib < hfe (min) of the selected transistor.

(2) take care that calculated Ic is less than Ic max which can be found in the datasheet.

(3) How did we determine ic/ib < hfe for saturation?
Consider the simple circuit shown in figure, with one base resistor Rb, One collector load RL ,

 Let's assume for example RB = 1M, RL = 1k, B1 = 9V, hFE = 300 and VBE = 0.6V.
The voltage across RB will be VS-VBE=8.4V, so IB=8.4/1M=8.4µA. IC=IB·hFE=8.4µA·300=2.52mA. So the voltage across RL will be 2.52V.

Now, What will happen if in the example above, RB=100k instead of 1M?
IB=8.4/100k=84µA. You may expect that IC will be 84µA·300=25.2mA, but that isn't possible since the voltage across RL would be 25.2V which is more than B1.

 IC,max in this circuit is B1/RL=9/1k=9mA. So even if IB=84µA, IC will be 9mA. IC/IB=107, which is less than hFE. In such a case, when IC/IB < hFE, we say that the transistor has become saturated and can be considered as a closed switch (between C and E).

(b) Saturated Darlington
As explained in figure attached, if Ib loads the weak base supply, then a more powerful high beta transistor called darlington can be used. This will saturate even with tens of microamps of base current and won't load the weak base power supply.






Monday, October 29, 2018

Installing Apps to Android mobile in bulk using Laptop


Mobile phones are becoming useful sidekick apart from performing the basic function of making calls,  so much so that they are now managing various aspects of life like finances, science, day to day converters, communication and messaging , social media and so on.


A smart phone becomes a very useful tool in the hands of user depending on the apps it has been loaded with. Now here comes the problem! Apps are installed over the months and years  and if for any reason, a new phone is purchased or old one is formatted, all the apps have to be installed one by one which becomes tedious. The following steps will guide you as to how to take backup of all your apps in your laptop from your old phone  and then load them into your new phone in a single click..

Ok, so here are the steps..I have tried to keep it as simple as possible.

PREPARING THE PHONE & LAPTOP

1 Developer options have to be enabled on your phone to do this exercise. To enable developer options, open settings app, select System, scroll to bottom and select About Phone, scroll to bottom and tap Build number 7 times, return to previous screen to find Developer options near bottom

2. turn on USB Debugging in developer options.

3. Connect the phone to laptop by means of a USB cable and select USB debugging (ADB) mode., a seperate CD drive can be seen mounted in my computer containing the phone USB drivers for laptop, double click and install the drivers( this may differ from phone to phone, in some phones, you may have to download the USB drivers from manufacturers website and install)

4. download and unzip SDK platform-tools_r28.0.1 for windows in a directory , say D:\adb-fastboot\platform-tools

5. Right click my computer, go to properties, go to advanced system settings, click on environment variables button , in system variables scroll down and click on  path, click edit button, modify the path by adding a semicolon and inserting D:\adb-fastboot\platform-tools after semicolon as shown in screenshot below. click ok all the way to close the advanced system settings. This is being done so that you can run adb command from any path.
                                                 



6. reboot the laptop and open command window, and type adb, you should see something like this screenshot:-

now your laptop is ready to send commands to your phone via ADB

PREPARING THE PRINT.BAT FILE IN LAPTOP

1. Install myphone explorer app. My phone explorer is a nice nifty app which can be used to take backup of your apps, contacts, sms etc to your laptop . It also has a useful sync feature which can be used to sync files between your laptop and Phone external memory, if you happen to keep your work related stuff on your phone for ready reference.


2.  Install Myphone explorer on your laptop/PC.

3. turn on  your wifi hotspot on your mobile and connect your laptop to it.

4. open myphone explorer in both laptop and mobile phone and using the laptop app go to File-> connect to phone. click on Extras menu  -> Create backup as per the screenshot below. Now all your apps are stored in a folder in  laptop (say D:\apps-1)



5. open a command prompt window and cd to D:\apps-1. type dir /s /b > print.txt , this creates a file called print.txt in the folder. now, open this file in notepad and replace D:\ with adb install -r D:\  for all the occurrences.










6. Now, you might notice that some filenames of apps have space between them, we need to replace space with an _ (underscore) character everywhere. so we have another nifty vbscript file to do that for us. Download the file here , open the vbscript file in notepad and change the path in the Set fol line like Set fol = fso.GetFolder ("D:\apps-1"). what this vbscript file does is read each filename in
D:\apps-1 directory and find blank space in them and replace with a underscore. The reason why this is being done is the command line adb install fails on space in filenames so it has to be replaced with an underscore.
 
7. open print.txt in notepad and  click save as and enter filename as  print.bat and file type as all as shown in screenshot below. This will generate a batch file called print.bat
 
8. double click print.bat file to open a command window to install each app one by one as can be seen in screenshot below!
 

 
 
 
References:
 https://android.stackexchange.com/questions/64353/how-to-batch-install-apks-from-computer-to-android-without-actually-touching-my