LG killed its 360 camera after only 4 years - here's how to get it back


Four years ago, I reviewed the LG-R105 360 Camera. It's a pretty nifty bit of hardware. Sadly, LG have decided that they don't want to support it any more. They already got your money, so fuck you for expecting any further updates.

Here's their message:

We express a sincere gratitude for your patronage to LG 360 CAM Manager Service.
Due to changes in our operation policies, LG 360 CAM Manager Service via mobile applications will be terminated as of June 20, 2020.

Well, that's a load of bollocks, isn't it! Here's how you can continue using the camera on modern versions of Android - and connect to it on Linux.

Get The App

LG have removed it from Google Play. They could have left it there, but they didn't. But the Internet never forgets. So you can download the final version from APK Pure.

Copy the APK to your phone and install it. You can read the instructions to see how the app works.

If you're lucky, everything will just work. If not, read on…

Reset the camera

Charge the camera via USB-C. Turn it on by holding the power button for 4 seconds. After all the lights have stopped flashing, simultaneously hold down power and shutter for about 12 seconds. You'll get an assortment of flashy lights and sounds. This is the camera resetting. You may need to turn it off and on again.

Go into the app, and search for your device. Click on the device it finds.

Now, go to your phone's WiFi settings. You should see a new network called something like LGR105_123456.OSC. Connect to it.

The password will be 00123456 - so 00 plus the last 6 numbers of the Access Point name. Secure!

You can now go back to the app and use it as per normal.

Root it!

Oh yes 😁 using LGLAF you can force the camera into ADB debugging mode. You will also need to install PyUSB.

As per these instructions:

  1. Turn off camera by holding the power button until it beeps forlornly. Keep holding it down until the double LEDs on the side stop flashing.
  2. Plug a USB cable into a computer, but do not connect the camera
  3. Press and hold the shutter button while plugging the USB-C into the camera
  4. Keep holding the shutter button down until led turns blue
  5. In a terminal, type python lglaf.py --cr
  6. Type setprop persist.sys.usb.config mtp,adb
  7. Type exit and unplug camera
  8. Hold power button down until the blue LED goes off
  9. Hold power button to turn on the camera
  10. Plug camera back into USB-C
  11. On computer, type adb devices and you should see the camera

Now, using something like scrcpy you can connect to the camera and use it just like an Android phone!

Screenshot of an Android device with lots of debug options.

It acts just like a normal Android device - you have access to all the settings, developer mode, etc.
The Android "about phone" screen.

HTTP Requests

Once you've got access to the camera, you can turn on its WiFi and connect to your home network. As per these helpful instructions you can then use the built in OCS API.

For example, sending a HTTP GET to http://192.168.123.456:6624/osc/info will get you back:

{
  "manufacturer": "LGE",
  "model": "LG-R105",
  "serialNumber": "123456",
  "firmwareVersion": "R10510l",
  "supportUrl": "developer.lge.com/friends",
  "endpoints": {
    "httpPort": 6624,
    "httpUpdatesPort": 6624
  },
  "gps": false,
  "gyro": true,
  "uptime": 18,
  "api": [
    "/osc/checkForUpdates",
    "/osc/commands/execute",
    "/osc/commands/status",
    "/osc/info",
    "/osc/state"
  ],
  "apiLevel": [
    1,
    2
  ]
}

To take a photo, run:
curl -X POST http://192.168.123.456:6624/osc/commands/execute -H 'Content-Type: application/json' -d '{"name": "camera.takePicture"}'
that will save it on the camera's SD card.

To get a photo from the camera, run:
curl -X POST http://192.168.123.456:6624/osc/commands/execute -H 'Content-Type: application/json' -d '{"name": "camera.getLivePreview"}' --output test.jpg

I haven't figured out 360 streaming (if it is even possible) but you can get a preview of one of the cameras:

To start a session, run:
curl -X POST http://192.168.123.456:6624/osc/commands/execute -H 'Content-Type: application/json' -d '{"name": "camera.startSession"}'
To start a stream, run:
curl -X POST http://192.168.123.456:6624/osc/commands/execute -H 'Content-Type: application/json' -d '{"name": "camera._startPreview", "parameters": {"sessionId": "123"}}'

You will get back:

{
  "results": {
    "_previewUri": "udp://:1234"
  },
  "name": "camera._startPreview",
  "state": "done"
}

Run VLC and open the network stream udp://:1234 and you'll get a low-resolution preview of what the camera is seeing.

You can see more commands on the Open Spherical Camera API page.

Full list of commands

By decompiling the APK, I was able to extract these available commands. Anything which starts with _ is a manufacturer specific command, so won't work on other OSC cameras.

  • camera._getRecordingStatus
  • camera._getThumbnail
  • camera._getVideo
  • camera._listAll
  • camera._liveSnapshot
  • camera._manualMetaData
  • camera._pauseRecording
  • camera._resumeRecording
  • camera._startPreview
  • camera._startStillPreview
  • camera._stopPreview
  • camera._stopStillPreview
  • camera._updateTimer
  • camera.closeSession
  • camera.delete
  • camera.getFile
  • camera.getImage
  • camera.getMetadata
  • camera.getOptions
  • camera.listFiles
  • camera.setOptions
  • camera.startCapture
  • camera.startSession
  • camera.stopCapture
  • camera.takePicture
  • camera.updateSession

Enjoy!


Share this post on…

27 thoughts on “LG killed its 360 camera after only 4 years - here's how to get it back”

  1. I created an UWP app for it and the standard live preview only gives me roughly 1 frame per second with both sides. Your hack works for the rear side. Any idea how to get also the front side over UDP?

    Really hard to find any info. Appreciate your sharing.

    Reply
  2. George says:

    Hi,
    I have installed the LG 360 Cam Manager on an Samsung (Android) mobile and despite the phone finding the camera WiFi the app won't connect to the camera. I have hard reset the camera, connected to cam WiFi (using password), and 'forgot' WiFi when asked to. Nothing works. Surprisingly on opening the app the camera does power up automatically, bit then a connection cannot be established within the app. Any pointers?
    Thank you.

    Reply
    1. @edent says:

      Hi George,
      I have to open the app, wait for the camera to beep, then manually go to my phone's WiFi and connect to it. Make sure that you tell your phone to stay connected even though there's no Internet access. You may need to turn off any VPN or ad-blocker to get it to work.
      Good luck!
      Terence

      Reply
    1. @edent says:

      I don't think you can. Your options are to buy an old Android device, or find a new camera. Sorry.

      Reply
  3. ronald morrell says:

    Thank you

    I had hope to connect manually.. with out the app and use 3rd app like panorama 360
    Thank you

    Reply
  4. Amir omari says:

    I am really pissed that they pulled the iPhone app from the App Store in the process giving the middle finger to any iPhone owner that bought it , if you upgraded your iPhone or had to factory rest it sorry we have your money already take a hike seems to be the “customer centric “ philosophy of LG, I recently bought a 65” LG tv and an LG automatic washer dryer what next will it self destruct when LG feel I have had it for too long like 3 or 4 years …… not happy will think twice in future before making any kit LG purchases

    Reply
  5. Eli says:

    Found this after picking one up for $30. Absolutely thrilled that someone was able to investigate this thing and get a detailed post up somewhere! Thanks!

    Reply
  6. Col says:

    Hi, I think you may have already answered this. The file formats on the SD card are .JPG and .MP4. Is there a view app available for another project that can ready these files and interpret them as 3D/VR?

    Reply
      1. Hi @edent , I am battling to get pannellum to work with my LG-R105 Equirectangular images, the Pannellum "Simple Tutorial" it presents the image stil as the equirectangular flat image I seriously need to get this working I will appreciate your help, I need to be able to create a tour through my Radio Today Studios and although Theasys works perfectly with the LG images, its way too expensive for us

        Reply
          1. Thanks Terence
            I am using an old Samsung S6 with the original app, and since the Samsung has been rooted before it has become useless as a phone, but as a controller of the LG, its seems to be fine, My question is, that because the numerous occasions that an option does not work, and demands a software update, that does not work either, that my images may be out of line for the requirements of Pannellum.
            So do you suggest that I abandon the app and rather go the rooted LG route and then see if that works ?
            Thanks .. Mike

            Reply
            1. @edent says:

              I think all Pannellum needs is an equirectangual image. Do you have any example you could share?

              Reply
  7. Leonard says:

    I picked up one recently for really cheap, but I struggled to get the LG 360 CAM Manager app to connect to the camera. Turns out that a certain range of app versions work with a certain range of firmware versions. I suspect that it has something to do with the latest app expecting that the camera to support 3D/spatial audio recording which mine didn't.
    To fix the issue I had to install "LG Bridge" on the PC and connect the camera though USB to the PC. Then through the application I initiated a camera firmware update. Luckily LG still had the latest firmware on their servers. You can uninstall "LG Bridge" after the update.
    After the update you can follow the steps in the original guide and the latest app should be able to connect to the camera.

    Reply
  8. Leonard says:

    I'm really impressed with the audio quality from this camera. It is much better than the expensive Vuze 3D camera.
    If you record the audio in the '3D' mode then you can listen to the Ambix soundtrack from within 'ZOOM Ambisonics Player'. You just need to extract the audio track using ffmpeg and add additional metadata to the output WAV file. The player allows you to output/export to Stereo/Binaural/5.1 etc. based on the position that you set for the virtual head.

    Please make sure that you run the command from within Windows Powershell, because the ' escape characters won't be picked up by Command prompt. This is for the \r\n character is in the comment section. The dates/times can be changed and are just examples.
    ffmpeg.exe -i input_video_SA3D.mp4 -metadata comment="rnzTAKE=001rnzSCENE=230812rnzTRK1=WrnzTRK2=YrnzTRK3=ZrnzTRK4=XrnzNOTE=rn" -metadata encoded_by="LG 360 CAM" -metadata date="2023-08-12" -metadata creation_time="14:50:52" -metadata coding_history="A=PCM,F=48000,W=24,M=multi ,T=LG 360 CAM Spatial Audio Mode;Rec Mode=AmbiX; Mic Position=Upright; Correction Filter=Off" -vn -c:a pcm_s24le -write_bext 1 output_Ambix_FromLossy_NoZChan.wav

    Reply
  9. Leonard says:

    The ffmpeg command did not format correctly in the previous message.
    Replace the \ for every \r and \n with a backtick character. https://en.wikipedia.org/wiki/Backtick
    Also remember that the backtick escape character will only work in Powershell.

    ffmpeg.exe -i input_video_SA3D.mp4 -metadata comment="\r\nzTAKE=001\r\nzSCENE=230812\r\nzTRK1=W\r\nzTRK2=Y\r\nzTRK3=Z\r\nzTRK4=X\r\nzNOTE=\r\n" -metadata encoded_by="LG 360 CAM" -metadata date="2023-08-12" -metadata creation_time="14:50:52" -metadata coding_history="A=PCM,F=48000,W=24,M=multi ,T=LG 360 CAM Spatial Audio Mode;Rec Mode=AmbiX; Mic Position=Upright; Correction Filter=Off" -vn -c:a pcm_s24le -write_bext 1 output_Ambix_FromLossy_NoZChan.wav

    Reply
  10. Theo Harbers says:

    first happy new year! During the holidays, I had time to play with the LGR105 that I still had but no longer use. I want to start using it for security purposes. For that, I want to permanently connect it to the wifi. I successfully followed all the instructions and the camera connects to the wifi network after turning it on. With ADB tcpip, I have access. The strange thing is that the CCS listening port 6624 is not present ( >adb shell netstat ) while the CCS app is active. If connected via the hotspot, port 6624 is present and does work. Does anyone have the same problem? I think the CCS is waiting for connections through the specific hotspot. Perhaps there is another firmware that does not have the problem. Thanks for your replies or ideas.

    Reply
  11. Annoyed at LG says:

    I have one of these fine little 360 toys, and after much effort I give up. The wifi password of 00123456 did not connect for me. The camera still works, as I took out the sd card and i see all the video of today me fooling around. I just cant connect to the app.

    Willing to sell mine if anyone is interested.

    Reply
    1. @edent says:

      The 123456 refers to the last 6 digits of your camera's access point name. If that doesn't work, try resetting it again.

      Reply
  12. Zammo76 says:

    I've tried to install the app for my Pixel 7 Pro and it comes up with a message saying app not installed as app isn't compatible with your phone. Presumably it's checking which version of Android I'm running (14) and then blocking it from installing?

    I think the camera is still recording stuff.

    Reply
  13. Simon says:

    Has anyone managed to install any .apk apps onto this device? If I run adb install [package.apk] the file is transferred to the camera (into /data/local/tmp), but then the camera just immediately reboots itself when pm install is run. I've tried a few different apks (various camera apps).

    Reply

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">