Re-config Brother HL-2130 sharing after Lenovo EZ firmware update

Follow last post Share Brother HL-2130 through Lenovo Iomega EZ Media & Backup Center USB port.

Recently I update Lenovo EZ firmware, but unfortunately Brother HL-2130 sharing stops working.

After some research, I found that CUPS web page is not configured for external IP address.

By default you are only able to access CUPS admin web interface from localhost by going to https://localhost:631.
But to access this page from another remote machine, you need to first make some edits to the cups conf file. So do the following:

1. Edit the cups configuration file located in /etc/cups/cupsd.conf and make the section that looks like:

    # Only listen for connections from the local machine.
    Listen localhost:631
    Listen /var/run/cups/cups.sock

look like this:

    # Listen on all interfaces
    Port 631
    Listen /var/run/cups/cups.sock

2. Then you need to modify the Apache specific directives to allow connections from everywhere as well. Replace the followin section:

    <Location />
    # Restrict access to the server...
    Order allow,deny
    </Location>
    <Location /admin>
    # Restrict access to the admin pages...
    Order allow,deny
    < /Location>
    <Location /admin/conf>
    AuthType Default
    Require user @SYSTEM
    # Restrict access to the configuration files...
    Order allow,deny
    </Location>

to:

    <Location />
    # Restrict access to the server...
    Order allow,deny
    Allow all
    </Location>
    <Location /admin>
    # Restrict access to the admin pages...
    Order allow,deny
    Allow all
    </Location>
    <Location /admin/conf>
    AuthType Default
    Require user @SYSTEM
    # Restrict access to the configuration files...
    Order allow,deny
    Allow all
    </Location>

3. Restart your cups daemon:

    # /etc/init.d/cupsd restart

4. You should now be able to log into cups on your server with:

https://yourserverip:631

Directly Download Apk from Google Play Store on PC/Mobile

Website #1. Evozi Apk Downloader

Website #2. ApkLeecher.com

Website #3.  Downloader-Apk.com

Website #4. Apk-Freedownload.com
Thanks albertine samy!
Website #5. apkappownload.com


Two more new website added:

Website #6. Apk-Dl.com

Website #7. Apkpure.com

Thanks Abi!

Website #8. APKMirror.com

Website #9. APKMonk.com

How to get 1080p in Youtube’s HTML5 player in Firefox

Recently, I updated my Firefox browser, and when I was watching Youtube, I couldn’t get 1080p HD anymore. 🙁

I found this article and it solved my issue. Let me remember these steps just in case in future it happened again.

  1. Enter
     about:config

    in your address bar to get to the advanced configuration page. Click “I’ll be careful, I promise” (and actually be careful because you can break all sorts of things in there if you’re not!) to continue.

  2. Search
    "mediasource"

    to see the options you need.

  3. Double-click both “media.mediasource.enabled” and “media.mediasource.webm.enabled” in order to change their value to “true”.

SIMD high performace xorcpy in C

In my current project I need a high performace xorcpy implemented in C. Here is my implementation to share and it is tested on my Xeon E5-2680 PC, it reaches almost 1.7GB/s.

#include <emmintrin.h>
...
__forceinline unsigned char* xorcpy(unsigned char* dst, const unsigned char* src, unsigned block_size)
{
    // Do the bulk of the copy a __m128i at a time, for faster speed
    __m128i* mto = (__m128i*)dst;
    const __m128i* mfrom = (__m128i*)(src);
    for(int i=(block_size / sizeof(__m128i) - 1); i>=0; i--)
    {
        __m128i xmm1 = _mm_loadu_si128(mto);
        __m128i xmm2 = _mm_loadu_si128(mfrom);

        xmm1 = _mm_xor_si128(xmm1, xmm2);     //  XOR 16 bytes
        _mm_storeu_si128(mto, xmm1);
        ++mto;
        ++mfrom;
    }

    // The rest bytes we have to do a byte a time though
    unsigned char* cto = (unsigned char*) mto;
    const unsigned char* cfrom = (const unsigned char*)mfrom;
    for(int i=(block_size % sizeof(__m128i)) - 1; i>=0; i--)
    {
        *cto++ ^= (*cfrom++);
    }
    return dst;
}

Share Brother HL-2130 through Lenovo Iomega EZ Media & Backup Center USB port

Recently I bought a Lenovo® EZ Media and Backup Center to share video and photos within my home network. I also have a Brother HL-2130 Mono Laser long time back which is connected to my PC USB port. Every time, when I want to print something, I have to keep my PC on. I am thinking is there a way to connect my Brother HL-2130 Mono Laser to Lenovo® EZ Media and Backup Center USB port, and sharing HL-2130 within my home network. I can print from any devices even from my iPad, Andaroid phone.

After few hours trying, I finally successfully share HL-2130 through Lenovo NAS USB port. This is the post I found from internet, and it gives the detailed steps.

http://forum.nas-central.org/viewtopic.php?f=279&t=8679

Here are the steps I followed to install HL-2130:

  1. In PC’s browser, go to http://lenovoez/manage/login.html?pg=/manage/diagnostics.html. Enable SSH login
  2. Download putty, and login your Lenovo NAS through SSH
  3. Connect HL-2130 to Lenovo NAS USB Port
  4. Issue command “/etc/init.d/cups start” to start CUPS service
  5. In PC’s browser, go to http://lenovoez:631/admin
  6. Click “Add Printer” and find Brother_HL-2130_series printer from local printers.
  7. In “Printers” tab, you will find Brother_HL-2130_series. Actually, the address for HL-2130 is http://lenovoez:631/printers/Brother_HL-2130_series
  8. Download latest HL-2130 Windows OS printer driver from http://support.brother.com/g/b/downloadtop.aspx?c=us_ot&lang=en&prod=hl2130_all
  9. Go back to PC, and Add new printer, give the printer address http://lenovoez:631/printers/Brother_HL-2130_series
  10. Click “Have a disk” and install HL-2130 printer driver.
  11. Follow the steps in the post to make cups to run every time the box reloads.

Convert DIB or BMP into JPEG in memory (diskless) using Windows GDIPlus

    
    #include 
    #include 

    using namespace Gdiplus;

    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    ...
    IStream* pJpegStream = NULL;  //declare a memory stream
    CreateStreamOnHGlobal(NULL, TRUE, (LPSTREAM*)&pJpegStream);

    GpBitmap* pBitmap = NULL;
    unsigned char* dib = GetDib(); //get DIB or BMP data buffer
    DllExports::GdipCreateBitmapFromGdiDib((LPBITMAPINFO)dib, dib + sizeof(BITMAPINFOHEADER), &pBitmap);

    CLSID imageCLSID;
    GetEncoderClsid(L"image/jpeg", &imageCLSID);

    int jpegQuality = 100;

    EncoderParameters encoderParams; //setup jpeg encoder parameters
    encoderParams.Count = 1;
    encoderParams.Parameter[0].NumberOfValues = 1;
    encoderParams.Parameter[0].Guid = EncoderQuality;
    encoderParams.Parameter[0].Type = EncoderParameterValueTypeLong;
    encoderParams.Parameter[0].Value = &jpegQuality;

    //save jpeg into memory stream
    DllExports::GdipSaveImageToStream(pBitmap, pJpegStream, &imageCLSID, &encoderParams);

    LARGE_INTEGER lnOffset;
    lnOffset.QuadPart = 0;
    ULARGE_INTEGER ulnSize;
    //determine memory stream length
    pJpegStream->Seek(lnOffset, STREAM_SEEK_END, &ulnSize);
    pJpegStream->Seek(lnOffset, STREAM_SEEK_SET, NULL);
    int encodedBytes = ulnSize.QuadPart;
    
    //store jpeg memory stream into jpeg data buffer
    pJpegStream->Read(racBuf_, ulnSize.QuadPart, NULL);
    ...
    GdiplusShutdown(gdiplusToken);